Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Процедура внутри MERGE  [new]
Notsaint
Member

Откуда:
Сообщений: 12
Добрый вечер.

Могу я использовать вызов процедуры внутри MERGE?

ALTER PROCEDURE Suppliers.DeleteDuplicateSupplierNumber
	@S_Desc nvarchar(20) ,
    @S_Numb Suppliers.SupplierNumber ,
	@S_Date date ,
	@S_Type nchar (30) ,
	@S_Tel char(10) ,
	@S_Mail varchar(25)
AS 
BEGIN
    MERGE Suppliers.Suppliers AS target
    USING (SELECT @S_Desc, @S_Numb, @S_Date, @S_Type, @S_Tel, @S_Mail) AS source (S_Desc, S_Numb, S_Date, S_Type, S_Tel, S_Mail)
    ON (target.SupplierNumber = source.S_Numb)
    WHEN MATCHED THEN 
        UPDATE SET SupplierDescription = source.S_Desc
	WHEN NOT MATCHED THEN
		EXEC Suppliers.InsertNewSupplier
					@S_Desc ,
					@S_Numb ,
					@S_Date ,
					@S_Type ,
					@S_Tel  ,
					@S_Mail
					
END;
GO


Указанный выше код дает ошибку
Msg 156, Level 15, State 1, Procedure DeleteDuplicateSupplierNumber, Line 16
Incorrect syntax near the keyword 'EXEC'.
29 май 14, 21:50    [16094577]     Ответить | Цитировать Сообщить модератору
 Re: Процедура внутри MERGE  [new]
Glory
Member

Откуда:
Сообщений: 104760
Notsaint
Могу я использовать вызов процедуры внутри MERGE?

Не можете. И не только в MERGE, а вообще в любом DML
29 май 14, 21:54    [16094590]     Ответить | Цитировать Сообщить модератору
 Re: Процедура внутри MERGE  [new]
Notsaint
Member

Откуда:
Сообщений: 12
Glory
Не можете. И не только в MERGE, а вообще в любом DML


А Begin Transaction?

Дело в том, что при добавлении я должен проверять определенные условия, заданные в процедуре Suppliers.InsertNewSupplier
29 май 14, 21:57    [16094606]     Ответить | Цитировать Сообщить модератору
 Re: Процедура внутри MERGE  [new]
Shakill
Member

Откуда: мск
Сообщений: 1880
Notsaint, если открыть справку по merge и глянуть на описание синтаксиса, то такой вопрос не возникнет и не надо будет тратить время на форум
29 май 14, 22:00    [16094619]     Ответить | Цитировать Сообщить модератору
 Re: Процедура внутри MERGE  [new]
Glory
Member

Откуда:
Сообщений: 104760
Notsaint
А Begin Transaction?

И синтаксисе команды Begin Transaction тоже не предусмотрен вызов процедур
И вообще синтаксис всех команд есть в хелпе
29 май 14, 22:13    [16094664]     Ответить | Цитировать Сообщить модератору
 Re: Процедура внутри MERGE  [new]
Notsaint
Member

Откуда:
Сообщений: 12
Glory
И вообще синтаксис всех команд есть в хелпе


Не возражаю.

Фраза - <merge_matched> - должна была сразу натолкнуть на правильный путь.

Справился :)
29 май 14, 22:41    [16094755]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить