我想創建一個腳本來創建/設置一組存儲過程,這些存儲過程都將非常相似。SQL動態創建存儲過程?
所以我試圖循環這段代碼,在需要時更改@DATABASE_NAME
和@TableName
。
/* Start loop */
DECLARE @create_stored_procedure nvarchar(max)
SET @create_stored_procedure = N'
USE [' + @DATABASE_NAME + ']
CREATE PROCEDURE [dbo].[sproc_imp_' + @TableName + ']
AS
BEGIN
PRINT(''doing something'')
END'
EXEC sp_executesql @statement = @create_stored_procedure
/* End loop */
但我得到錯誤說
'CREATE/ALTER PROCEDURE' 必須是查詢批次中的第一個語句。
或
'CREATE/ALTER PROCEDURE' 不允許指定數據庫名作爲前綴的對象名。
所有在線解決方案都建議使用GO,但這不適用於動態SQL。
有誰知道SQL Server 2005的可能解決方案嗎?
你是否試過將'use db'和'create procedure'分割爲兩個動態sql? – Nithesh