SET FMTONLY (Transact-SQL)

S’applique à :SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Point de terminaison analytique SQL dans Microsoft FabricEntrepôt dans 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.

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\]
>>
****/

Voir aussi

Instructions SET (Transact-SQL)