我在編寫一個tsql過程來將一個數據庫中的所有視圖重新創建到不同的dtabase上。我收到錯誤「+ +語法錯誤」當我查看代碼時,雖然語法對我來說是正確的。任何人都可以告訴我這個查詢有什麼問題嗎?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
在此先感謝
儘量寫全在一個單獨的var中加入句子:'set @sql = N'....'然後用它作爲'sp_executesql'參數。 – danihp
我試過最初danihp,但由於它的視圖它不工作,因爲視圖的聲明必須是批處理中的第一條語句。這是嵌套executionql語句的原因。 – Lumpy
聲明一個新的var @total_sql並在這個新的var中設置所有命令:set @total_sql = N'Use ...'+ @sql +'''然後執行'EXEC sp_executesql @ total_sql'。嘗試這個。 – danihp