sql中创建存储过程的最佳实践

ben*_*ben 0 sql t-sql stored-procedures sql-server-2012

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

这是最好的方法,以减轻时间。并且如果您以后需要更改它?

ben*_*ben 5

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

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

  • 上述脚本的第二部分总是改变存储过程——无论它是在第一步中创建的还是之前存在的。所以,每次你需要对存储过程做一些改动时,只需要改变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
Run Code Online (Sandbox Code Playgroud)

希望它可以帮助某人,谢谢。

以下是更多信息的链接:http : //dattatreysindol.com/2012/05/29/tips-n-tricks-t-sql-an-elegant-way-to-create-or-alter-stored-procedures-一键式易于维护/