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

时间:2014-03-06 13:06:11

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

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

这是减轻时间的最好方法。并且还需要稍后改变它吗?

1 个答案:

答案 0 :(得分:3)

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

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

  • 上述脚本的第二部分始终改变存储过程 - 无论是在第一步中创建还是在之前存在。因此,每次需要对存储过程进行一些更改时,只需更改上述脚本的ALTER PROCEDURE部分(第二部分),就可以执行整个脚本,而无需担心存储过程是否已存在。< / p>

示例代码:

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/