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 回答