Tsql 动态T-SQL的捕获结果

Tsql 动态T-SQL的捕获结果,tsql,azure-sql-database,Tsql,Azure Sql Database,我正在尝试重新使用可用的代码。目标是检查所有表中的所有列以计算空值以进行质量检查 我有#tbl_chknull保存所有要执行的查询。要执行每个查询,我有: DECLARE @nbr_statements INT = (SELECT COUNT(*) FROM #tbl_chknull) , @i INT = 1 , @vi INT ; WHILE @i <= @nbr_statements BEGIN DECLARE @sq

我正在尝试重新使用可用的代码。目标是检查所有表中的所有列以计算空值以进行质量检查

我有
#tbl_chknull
保存所有要执行的查询。要执行每个查询,我有:

DECLARE   @nbr_statements INT = (SELECT COUNT(*) FROM #tbl_chknull)
        , @i INT = 1
        , @vi INT
        ;

WHILE   @i <= @nbr_statements
BEGIN
    DECLARE @sql_code NVARCHAR(4000) = (SELECT sql_code FROM #tbl_chknull WHERE [sequence] = @i);
    EXEC sp_executesql 
          @Query  = @sql_code
        , @Params = N'@vi INT OUTPUT'
        , @vi = @vi OUTPUT;

    SELECT @vi
    SET     @i +=1;
END
DECLARE@nbr_语句INT=(从#tbl_chknull中选择COUNT(*)
,@i INT=1
,@vi INT
;

而@i执行
打印@sql\u code
以验证查询显示此语句之一。我猜您只是没有在那里设置
@vi
值。此查询的结果取决于临时表
\tbl\u chknull
sql\u code
列的内容。你能提供临时表格内容的样本吗?还请注意,您链接到的文档针对的是专业数据库产品,以前称为Azure SQL数据仓库,现在称为Azure Synapse Analytics,因此有一些特殊注意事项,例如,临时表的行为在Synapse和Azure SQL DB中是不同的。您能否确认您正在使用的Synapse(nee Warehouse)特定Azure数据库产品没有标记?谢谢。大家好,@Squirrel,@gotqn,@wBob——就一个例子,
\tbl\u chknull
中的
@sql\u code
有有效的sql语句,比如:
从[dbo].[RLF\u KNORR\u SKU]中选择COUNT(1),其中[product\u code]不为NULL
因此产生两个输出:第一个来自
EXEC
部分的值为0,第二个来自
SELECT
部分的值为null执行一个
PRINT@sql\u code
以验证查询显示这条语句之一。我猜您只是没有在那里设置
@vi
值。此查询的结果取决于临时表
\tbl\u chknull
sql\u code
列的内容。你能提供临时表格内容的样本吗?还请注意,您链接到的文档针对的是专业数据库产品,以前称为Azure SQL数据仓库,现在称为Azure Synapse Analytics,因此有一些特殊注意事项,例如,临时表的行为在Synapse和Azure SQL DB中是不同的。您能否确认您正在使用的Synapse(nee Warehouse)特定Azure数据库产品没有标记?谢谢。大家好,@Squirrel,@gotqn,@wBob——就一个例子,
\tbl\u chknull
中的
@sql\u code
有有效的sql语句,比如:
从[dbo].[RLF\u KNORR\u SKU]中选择COUNT(1),其中[product\u code]不为NULL产生两个输出:第一个来自
EXEC
部分的输出为0,第二个来自
SELECT
部分的输出为NULL