【问题标题】:The best practice for creating a stored procedure in sql [duplicate]在 sql 中创建存储过程的最佳实践 [重复]
【发布时间】:2014-03-06 13:06:10
【问题描述】:

我曾经遇到过这个问题,创建了一个程序,然后当我想更改它时,我曾经先删除它,然后重新创建它。然后我认为这需要很多时间。 我必须找到更好的方法!

这是最好的方式,以减轻时间。并且还以防您以后需要更改它??

【问题讨论】:

    标签: sql tsql stored-procedures sql-server-2012


    【解决方案1】:

    有趣的是,我发现您可以使用一个程序完成所有这些操作。您将程序分为两部分:

    • 如果指定架构中具有指定名称的存储过程不存在,第一部分将创建一个空/虚拟存储过程/存根。当您在新环境中创建此存储过程时,这对于初始设置很有用。

    • 上述脚本的第二部分总是改变存储过程——无论它是在第一步中创建的还是之前存在的。所以,每次需要对存储过程进行一些修改时,只需要修改上述脚本的ALTER PROCEDURE部分(第二部分),就可以执行整个脚本,而不必担心存储过程是否已经存在。

    示例代码:

    USE AdventureWorks 
    GO 
    IF OBJECT_ID('dbo.uspGetEmployeeDetails') IS NULL -- Check if SP Exists
        EXEC('CREATE PROCEDURE dbo.uspGetEmployeeDetails AS SET NOCOUNT ON;') -- Create dummy/empty SP 
    
    GO 
    ALTER PROCEDURE dbo.uspGetEmployeeDetails -- Alter the SP Always 
        @EmployeeID INT 
    AS 
    BEGIN 
        SET NOCOUNT ON; 
    
        SELECT  HRE.EmployeeID , 
                PC.FirstName + ' ' + PC.LastName AS EmployeeName , 
                HRE.Title AS EmployeeTitle , 
                PC.EmailAddress AS EmployeeEmail , 
                PC.Phone AS EmployeePhone 
        FROM    HumanResources.Employee AS HRE 
                LEFT JOIN Person.Contact AS PC 
                    ON HRE.ContactID = PC.ContactID 
        WHERE HRE.EmployeeID = @EmployeeID 
    
    END 
    GO
    

    希望对某人有所帮助,谢谢。

    这里是更多信息的链接:http://dattatreysindol.com/2012/05/29/tips-n-tricks-t-sql-an-elegant-way-to-create-or-alter-stored-procedures-in-one-go-for-easy-maintenance/

    【讨论】:

    • 这是做事的好方法。通常你会看到人们删除 proc 如果它存在,然后重新创建它会起作用,但是你会失去对对象的权限。
    猜你喜欢
    • 2010-12-24
    • 2010-12-28
    • 1970-01-01
    • 2017-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多