Вызовите хранимую процедуру обновления в хранимой процедуре вставки, если запись существует - PullRequest
0 голосов
/ 29 апреля 2020

Я пытаюсь вызвать хранимую процедуру в другой. Проблема в том, что оба используют одни и те же переменные. Как мне получить их во встроенной процедуре?

CREATE PROCEDURE uspInsert @foo int, @bar int, @cat bit
    SET @recId = (SELECT TOP(1) id FROM table WHERE foo = @foo)
    IF (@recId IS NULL)
        BEGIN INSERT INTO table
        END
    ELSE
        BEGIN
            EXEC uspUpdate @foo = @foo, @bar = @bar, @cat = @cat
        End

Update pro c

CREATE PROCEDURE uspUpdate @foo INT, @bar INT, @cat BIT;

1 Ответ

1 голос
/ 29 апреля 2020

Вы не обязаны использовать имена параметров при вызове SP, если они находятся в правильном порядке. Попробуйте вместо этого:

CREATE PROCEDURE uspInsert @foo int, @bar int, @cat bit
SET @recId = (SELECT TOP(1) id FROM table WHERE foo = @foo)
IF (@recId IS NULL)
    BEGIN INSERT INTO table
    END
ELSE
    BEGIN
        EXEC uspUpdate @foo, @bar, @cat
    END
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...