【发布时间】:2010-04-26 16:42:38
【问题描述】:
我有一个设置为投入生产的 sql 脚本。我已经将各种项目包装成单独的交易。在每个事务中,我们都创建了存储过程。我收到错误消息
消息 156,级别 15,状态 1,第 4 行 关键字“procedure”附近的语法不正确。
我创建了这个示例脚本来说明
Begin Try
Begin Transaction
-- do a bunch of add/alter tables here
-- do a bunch of data manipulation/population here
-- create a stored proc
create procedure dbo.test
as
begin
select * from some_table
end
Commit
End Try
Begin Catch
Rollback
Declare @Msg nvarchar(max)
Select @Msg=Error_Message();
RaisError('Error Occured: %s', 20, 101,@Msg) With Log;
End Catch
该错误似乎暗示我无法在事务中创建存储过程,但我没有找到任何其他说明的文档(也许谷歌今天不友好)。
【问题讨论】:
-
是的,对不起,我应该提到这一点。 sql 2008.
-
我决定将 create proc 从事务中提取出来,并将 try/catch 放到它自己的部分中。我输入了一个“如果存在则删除”语句,并在存储过程创建周围添加了一个“如果存在则打印消息”语句。感谢所有的反馈,我从中学到了一些东西。
标签: sql-server sql-server-2008 stored-procedures