4

在 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

它显示的错误是“'=' 附近的语法不正确”,在将计数(*)分配给变量时的选择查询中它给出了错误。但相同的逻辑在 Azure SQL 数据库中运行良好。请帮助解决这个问题.

4

2 回答 2

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
于 2016-05-06T22:23:50.237 回答
1

Azure SQL 数据仓库不支持选择 @var。 https://msdn.microsoft.com/en-us/library/ms187330.aspx

您可以找到解决方法https://azure.microsoft.com/en-us/documentation/articles/sql-data-warehouse-develop-variable-assignment/

于 2016-05-06T14:57:13.580 回答