我想创建一个脚本来创建/设置一组存储过程,这些存储过程都将非常相似。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