SET FMTONLY (Transact-SQL)SET FMTONLY (Transact-SQL)

APPLIES TO: yesSQL Server yesAzure SQL Database yesAzure SQL Data Warehouse yesParallel Data Warehouse

Restituisce solo i metadati al client.Returns only metadata to the client. Può essere utilizzata per testare il formato della risposta senza eseguire effettivamente la query.Can be used to test the format of the response without actually running the query.

Icona di collegamento a un argomentoConvenzioni della sintassi Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SintassiSyntax

SET FMTONLY { ON | OFF }   

RemarksRemarks

Quando FMTONLY è ON, viene restituito un set di righe con i nomi delle colonne, ma senza righe di dati.When FMTONLY is ON, a rowset is returned with the column names, but without any data rows.

SET FMTONLY ON non ha effetto quando viene analizzato il batch Transact-SQL.SET FMTONLY ON has no effect when the Transact-SQL batch is parsed. L'effetto si verifica durante la fase di esecuzione.The effect occurs during execution run time.

Il valore predefinito è OFF.The default value is OFF.

AutorizzazioniPermissions

È richiesta l'appartenenza al ruolo public.Requires membership in the public role.

EsempiExamples

Nell'esempio di codice Transact-SQL che segue FMTONLY viene impostato su ON.The following Transact-SQL code example sets FMTONLY to ON. Questa impostazione fa in modo che SQL Server restituisca solo le informazioni sui metadati per le colonne selezionate.This setting causes SQL Server to return only metadata information about the selected columns. Nello specifico vengono restituiti i nomi delle colonne.Specifically, the column names are returned. Non vengono restituite righe di dati.No data rows are returned.

Nell'esempio, l'esecuzione di prova della stored procedure prc_gm29 restituisce quanto segue:In the example, the test execution of stored procedure prc_gm29 returns the following:

  • Set di righe multipli.Multiple rowsets.
  • Colonne da più tabelle, in una delle relative istruzioni SELECT.Columns from multiple tables, in one of its SELECT statements.
go
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\]
>>
****/

Vedere ancheSee Also

Istruzioni SET (Transact-SQL)SET Statements (Transact-SQL)