Oracle会“创建或替换”语句。 Sql服务器似乎没有 - 如果你正在从企业管理器脚本化,它反而建议“放弃并创建”。在存储过程中完成授权的任何情况下,删除和创建都是不可取的,因为它会抛出数据库管理团队完成的任何授权。您确实需要“创建或替换”来帮助开发人员和管理员之间的分离。如果在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
此我想要做什么。如果该过程不存在,则创建它,然后更改正确的代码。如果该过程确实存在,则创建失败,并且该更新将使用新代码更新代码。
它为管理员创建了一个不同的问题,因为如果存储过程已经存在,create会引发误导性错误。当然,误导,事实上,当期望的结果发生时,你不应该看到红色错误文本。
有没有人有办法压制红色文字?我试过的所有东西都会导致'CREATE/ALTER PROCEDURE必须是查询批处理中的第一条语句'。
的可能的复制[?你怎么在SQL Server中创建或更改做(http://stackoverflow.com/questions/1434160/what-do-you-do-in-sql -server-to-create-or-alter) – ruffin
我要指出的是,如果您将权限作为proc的一部分编写,那么在Drop和Create中没有问题。如果您对proc有特殊权限,那么它应该是存储在源代码库中的脚本的一部分。然后当你去做改变时,那里已经有了许可。 – HLGEM