4

Azure SQL Data Warehouse ストアド プロシージャで、動的 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(*) を代入するとエラーが発生します。しかし、同じロジックが Azure SQL Database で正常に機能しています。これを解決するために親切に助けてください。 .

4

2 に答える 2

8

SQL DW または PDW では SELECT を使用して変数を設定できないため、代わりに SET を使用する必要があります。

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

@var の選択は、Azure SQL データ ウェアハウスではサポートされていません。 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 に答える