0

あるデータベースのすべてのビューを別のデータベースに再作成する tsql プロシージャを作成しています。コードを見ると、構文は正しいように見えますが、「+ 付近の構文が正しくありません」というエラーが表示されます。このクエリの何が問題なのか誰か教えてもらえますか?

USE [SOURCEDB]   
BEGIN  
DECLARE @SQL NVARCHAR(MAX)  
DECLARE CUR_V CURSOR FOR  
SELECT sc.text     
FROM sys.views av          
JOIN sys.syscomments sc ON sc.id = av.object_id  
OPEN CUR_V  
FETCH NEXT FROM CUR_V INTO @SQL  
WHILE @@FETCH_STATUS = 0  
BEGIN    
EXEC sp_executesql N'USE [DESTINATIONDB] EXEC sp_executesql ' + @SQL + ''       
FETCH NEXT FROM CUR_V INTO @SQL  END  CLOSE CUR_V  DEALLOCATE CUR_V  END

前もって感謝します

4

1 に答える 1

1

+ を同じ行で実行することはできませんsp_executesql

declare @sql nvarchar(1000)
select @sql = N'USE [DESTINATIONDB] EXEC sp_executesql ' + @SQL + '' 
exec sp_executesql @sql

またはおそらくあなたが意味するのは

select @sql = N'USE [DESTINATIONDB] EXEC sp_executesql N''' + @SQL + '''' 
于 2012-09-10T12:43:13.003 に答える