Объявления переменных хранимых процедур - PullRequest
0 голосов
/ 28 сентября 2018

Просто интересно, чем отличаются эти два объявления хранимых процедур?

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 голосов
/ 28 сентября 2018

У вас нет скобок вокруг параметров в первом:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...