Я хочу написать код, который я создал с помощью «Хранимой процедуры», как функцию - PullRequest
0 голосов
/ 22 апреля 2019
CREATE PROC add_person
(
    @id tinyint,
    @name nvarchar(max),
    @surname nvarchar(max),
    @salary int,
    @job nvarchar(max)
)
AS
BEGIN
    INSERT INTO information
    VALUES(@id,@name,@surname,@salary,@job)
END

Я хочу написать этот код как функцию. Но понятие " return " меня смущает. Вот почему я не мог.

Я пытался написать приведенный выше код как функцию. Этот код вышел.

CREATE FUNCTION add_person
(
    @id tinyint,
    @name nvarchar(max),
    @surname nvarchar(max),
    @salary int,
    @job nvarchar(max)
)
RETURNS TABLE
AS
BEGIN
    RETURN INSERT INTO information -- not work
    VALUES(@id,@name,@surname,@salary,@job)
END

Ответы [ 2 ]

2 голосов
/ 22 апреля 2019

Если вы хотите вернуть вновь созданную таблицу, вы можете использовать хранимую процедуру для этого. Если вы используете SQL Server, код будет:

BEGIN
    INSERT INTO information -- not work
    VALUES(@id,@name,@surname,@salary,@job);
    SELECT * FROM information WHERE id = @@identity; -- this is the primary key just created.
END
1 голос
/ 22 апреля 2019

Функции намного более ограничены в своих функциях, чем хранимые процедуры.

Хотя insert разрешено, оно разрешено только в локальных переменных. Как говорится в документации :

  • Операторы INSERT, UPDATE и DELETE, модифицирующие переменные локальной таблицы.

С другой стороны, хранимая процедура может вернуть значение. Обычно это код состояния, где 0 означает, что все прошло успешно, а любое другое значение означает, что процесс завершился неудачей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...