Oracle 执行“创建或替换”语句。Sql server 似乎没有——如果您是从企业管理器中编写脚本,它反而建议“删除并创建”。在您对存储过程进行授权的任何情况下,删除和创建都是不可取的,因为它会丢弃您的数据库管理团队所做的任何授权。您确实需要“创建或替换”来帮助分离开发人员和管理员之间的问题。
我最近一直在做的是这样的:
use [myDatabase]
go
create procedure myProcedure as
begin
print 'placeholder'
end
go
alter procedure myProcedure as
begin
-- real sproc code here
end
go
这就是我想要的。如果该过程不存在,请创建它,然后更改正确的代码。如果该过程确实存在,则创建失败并且alter 使用新代码更新代码。
它给管理员带来了不同的问题,因为如果存储过程已经存在,create 会引发误导性错误。当然,误导性的事实是,当期望的结果发生时,您不应该看到红色错误文本。
有没有人有办法抑制红色文字?我尝试过的一切都会以某种方式导致“CREATE/ALTER PROCEDURE 必须是查询批处理中的第一条语句”错误。