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

Pra*_*ash 4 azure-sqldw azure-sql-database

在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
Run Code Online (Sandbox Code Playgroud)

它显示的错误是"'=''附近的语法不正确",在将查询(*)分配给变量时的select查询中,它给出了错误.但是相同的逻辑在Azure SQL数据库中正常工作.有助于解决这个问题.

Rob*_*ley 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
Run Code Online (Sandbox Code Playgroud)