SET FMTONLY (Transact-SQL)
S’applique à : SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW) SQL analytics endpoint in Microsoft Fabric Warehouse in Microsoft Fabric
Retourne uniquement des métadonnées au client. Peut être utilisé pour tester le format de la réponse sans avoir à exécuter la requête.
Notes
N'utilisez pas cette fonctionnalité. Cette fonctionnalité a été remplacée par les éléments suivants :
Conventions de la syntaxe Transact-SQL
Syntaxe
SET FMTONLY { ON | OFF }
Notes
Quand FMTONLY
est ON
, un ensemble de lignes est retourné avec les noms des colonnes, mais sans ligne de données.
SET FMTONLY ON
n’a aucun effet quand le lot Transact-SQL est analysé. L’effet se produit pendant l’exécution.
La valeur par défaut est OFF
.
Autorisations
Nécessite l'appartenance au rôle public.
Exemples
L’exemple de code Transact-SQL suivant affecte la valeur ON
à FMTONLY
. Ce paramètre fait en sorte que SQL Server retourne uniquement les informations de métadonnées sur les colonnes sélectionnées. Plus précisément, les noms de colonnes sont retournés. Aucune ligne de données n’est retournée.
Dans l’exemple, l’exécution test de la procédure stockée prc_gm29
retourne ce qui suit :
- Plusieurs ensembles de lignes
- Colonnes de plusieurs tables, dans l’une de ses instructions
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\]
>>
****/