Stored procedures 在CREATE存储过程中添加DROP的真正原因

Stored procedures 在CREATE存储过程中添加DROP的真正原因,stored-procedures,Stored Procedures,我只是想知道创建和执行存储过程的最佳实践是什么 我看到的情况如下:- IF EXISTS (SELECT * FROM sys.objects WHERE type = 'P' AND name = 'Foo') DROP PROCEDURE Foo GO CREATE PROCEDURE dbo.Foo 但是我认为当我们执行这个存储过程时,它会删除存储过程并创建一个新的存储过程。但是如果create存储过程语法中有错误,它将不会重新创建存储过程,对吗?因此,我们现有的存储过程被删除

我只是想知道创建和执行存储过程的最佳实践是什么

我看到的情况如下:-

IF EXISTS (SELECT * FROM sys.objects WHERE type = 'P' AND name = 'Foo')
  DROP PROCEDURE Foo
  GO

CREATE PROCEDURE dbo.Foo

但是我认为当我们执行这个存储过程时,它会删除存储过程并创建一个新的存储过程。但是如果create存储过程语法中有错误,它将不会重新创建存储过程,对吗?因此,我们现有的存储过程被删除,而新的存储过程不会被创建。那么,在此处添加DROP的真正原因是什么呢?

原因是您的脚本可以以某种方式运行—它们可以根据需要运行任意多次,并获得相同的结果。也就是说,数据库将具有所需的存储过程。您的过程将被创建,并在需要时预先删除。如果不这样做,则需要单独的拖放和创建脚本


如果您担心您的脚本有错误,那么就修复它们。运行脚本几次,并修复出现的任何问题。不必维护单独的脚本集,这样做是值得的。

因为它是以逐行方式执行的,所以当它创建过程,然后出现错误时,您再次重新创建该过程,然后它会出现错误,因为它已在数据库中生成,并带有错误代码

因此,它希望重新创建该过程

您可以使用alter而不是create

希望这能帮助你