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