存储过程变量声明

时间:2018-09-28 10:21:12

标签: sql-server tsql stored-procedures

只是想知道这两个存储过程声明之间有什么区别?

CREATE PROCEDURE [dbo].[sp_name] 
     @mainSorsTbl NVARCHAR(50), 
     @mainSorsClmn NVARCHAR(MAX),
     @fromTable NVARCHAR(50), 
     @fromColumn NVARCHAR(MAX), 
     @toTable NVARCHAR(50), 
     @toColumn NVARCHAR(MAX)
AS
BEGIN
   ....

还有这个

ALTER PROCEDURE [dbo].[sp_CopyScDestDevByVendor]
     (@var1 VARCHAR(15),  
      @var2 VARCHAR(8),  
      @var2 VARCHAR(20),  
      @var4 VARCHAR(8),  
      @var5 VARCHAR(3),  
      @INT = 0 OUTPUT) 
AS
    ......

谢谢

1 个答案:

答案 0 :(得分:0)

在第一个参数中没有括号:

CREATE procedure [dbo].[sp_name] @mainSorsTbl nvarchar(50), @mainSorsClmn nvarchar(max),@fromTable nvarchar(50), @fromColumn nvarchar(max), @toTable nvarchar(50), @toColumn nvarchar(max)
as
begin....

需要为:

CREATE procedure [dbo].[sp_name]
( @mainSorsTbl nvarchar(50), @mainSorsClmn nvarchar(max),@fromTable nvarchar(50), @fromColumn nvarchar(max), @toTable nvarchar(50), @toColumn nvarchar(max)
)
as
begin....

否则它将不起作用

ALTER仅在该过程已存在时才起作用。

使用较新版本的SQL的一种解决方法是使用

CREATE OR ALTER PROCEDURE sprocname