【发布时间】:2013-07-18 06:19:06
【问题描述】:
我正在尝试创建一个脚本来创建/设置一组非常相似的存储过程。
所以我试图循环遍历这段代码,在需要时更改@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吗?
标签: sql sql-server-2005 stored-procedures dynamic-sql