在Azure SQL数据仓库存储过程中,我尝试形成动态SQL并执行选择查询,我无法获取resutSet 以下是代码段:
DECLARE @sql nvarchar(400)
DECLARE @cnt int
BEGIN
---Some Business Logic---
SELECT @sql = N'select @cnt = count(*) from '+quotename(@src_TableName)+' where warn_remarks like ''%'+ @condition +'%''';
SET @parameter = N'@cnt int OUTPUT'
EXECUTE sp_executesql @sql,@parameter,@cnt = @cnt OUTPUT
END
它显示的错误是 “'='附近的语法不正确”,在将count(*)分配给变量时的select查询中,它给出了错误。但是相同的逻辑在Azure SQL数据库中正常工作。通常有助于解决此问题。
答案 0 :(得分:8)
您需要使用SET,因为您无法在SQL DW或PDW中使用SELECT设置变量。
DECLARE @sql nvarchar(400)
DECLARE @cnt int
BEGIN
---Some Business Logic---
SET @sql = N'SET @cnt = (select count(*) from '+quotename(@src_TableName)+' where warn_remarks like ''%'+ @condition +'%'')'; --replaced
SET @parameter = N'@cnt int OUTPUT'
EXECUTE sp_executesql @sql,@parameter,@cnt = @cnt OUTPUT
END
答案 1 :(得分:1)