Partilhar via


SET FMTONLY (Transact-SQL)

Aplica-se a:SQL ServerBase de Dados SQL do AzureInstância Gerida do Azure SQLAzure Synapse AnalyticsSistema de Plataforma de Análise (PDW)Ponto de Extremidade de Análise SQL no Microsoft FabricArmazém no Microsoft FabricBase de Dados SQL no Microsoft Fabric

Devolve apenas metadados ao cliente. Pode ser usado para testar o formato da resposta sem realmente executar a consulta.

Transact-SQL convenções de sintaxe

Sintaxe

SET FMTONLY { ON | OFF }   

Observações

Quando FMTONLY é ON, um conjunto de linhas é devolvido com os nomes das colunas, mas sem linhas de dados.

SET FMTONLY ON não tem efeito quando o lote Transact-SQL é analisado. O efeito ocorre durante a execução.

O valor predefinido é OFF.

Permissions

Requer a participação na função pública.

Examples

O seguinte exemplo de código Transact-SQL define FMTONLY para ON. Esta configuração faz com que o SQL Server devolva apenas informação de metadados sobre as colunas selecionadas. Especificamente, os nomes das colunas são devolvidos. Não são devolvidas linhas de dados.

No exemplo, a execução de teste do procedimento prc_gm29 armazenado retorna o seguinte:

  • Vários conjuntos de linhas.
  • Colunas de múltiplas tabelas, numa das suas SELECT declarações.
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\]
>>
****/

Ver também

Instruções SET (Transact-SQL)