SET FMTONLY (Transact-SQL)
適用於:MICROSOFT網狀架構 Microsoft倉儲中的 SQL Server Azure SQL 資料庫 Azure SQL 受控執行個體 Azure Synapse Analytics Analytics Platform System (PDW) SQL 分析端點
只將中繼資料傳回用戶端。 可以用來測試回應的格式,而不需實際執行查詢。
注意
請勿使用這個功能。 這項功能已由下列項目取代:
語法
SET FMTONLY { ON | OFF }
備註
當 FMTONLY
是 ON
時,會傳回一個含資料行名稱的資料列集,但不含任何資料列。
剖析 Transact-SQL 批次時,SET FMTONLY ON
沒有任何作用; 在執行階段的執行期間才會發生效果。
預設值是 OFF
。
權限
需要 public 角色中的成員資格。
範例
下列 Transact-SQL 程式碼範例會將 FMTONLY
設為 ON
。 此設定會導致 SQL Server 僅傳回所選資料行的中繼資料資訊。 具體來說,它會傳回資料行名稱, 而不會傳回任何資料列。
在範例中,測試執行預存程序 prc_gm29
時會傳回下列項目:
- 多個資料列集。
- 多個資料表的資料行 (在它的其中一個
SELECT
陳述式中)。
SET NOCOUNT ON;
GO
DROP PROCEDURE IF EXISTS prc_gm29;
DROP TABLE IF EXISTS #tabTemp41;
DROP TABLE IF EXISTS #tabTemp42;
GO
CREATE TABLE #tabTemp41
(
KeyInt41 INT NOT NULL,
Name41 NVARCHAR(16) NOT NULL,
TargetDateTime DATETIME NOT NULL DEFAULT GetDate()
);
CREATE TABLE #tabTemp42
(
KeyInt42 INT NOT NULL, -- JOIN-able to KeyInt41.
Name42 NVARCHAR(16) NOT NULL
);
GO
INSERT INTO #tabTemp41 (KeyInt41, Name41) VALUES (10, 't41-c');
INSERT INTO #tabTemp42 (KeyInt42, Name42) VALUES (10, 't42-p');
GO
CREATE PROCEDURE prc_gm29
AS
BEGIN
SELECT * FROM #tabTemp41;
SELECT * FROM #tabTemp42;
SELECT t41.KeyInt41, t41.TargetDateTime, t41.Name41, t42.Name42
FROM
#tabTemp41 AS t41
INNER JOIN #tabTemp42 AS t42 on t42.KeyInt42 = t41.KeyInt41
END;
GO
SET DATEFORMAT mdy;
SET FMTONLY ON;
EXECUTE prc_gm29; -- Returns multiple tables.
SET FMTONLY OFF;
GO
DROP PROCEDURE IF EXISTS prc_gm29;
DROP TABLE IF EXISTS #tabTemp41;
DROP TABLE IF EXISTS #tabTemp42;
GO
/**** Actual Output:
[C:\JunkM\]
>> osql.exe -S myazuresqldb.database.windows.net -U somebody -P secret -d MyDatabase -i C:\JunkM\Issue-2246-a.SQL
KeyInt41 Name41 TargetDateTime
----------- ---------------- -----------------------
KeyInt42 Name42
----------- ----------------
KeyInt41 TargetDateTime Name41 Name42
----------- ----------------------- ---------------- ----------------
[C:\JunkM\]
>>
****/