SQL Azure数据仓库动态SQL选择查询

时间:2016-05-06 08:16:28

标签: azure-sql-database azure-sqldw

在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数据库中正常工作。通常有助于解决此问题。

2 个答案:

答案 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)