вставить в таблицу и вернуть значение с помощью процедуры - PullRequest
0 голосов
/ 05 декабря 2011

Я хочу создать процедуру, которая вставляет в таблицу и возвращает ее первичный ключ. Первичный ключ таблицы - uniqueidentyfire, и его guid - true

Это хранимая процедура:

ALTER PROCEDURE [dbo].[pr_Tbl_Erae_Insert]
    @sfk_Dars varchar(20),
    @sfk_Ostad varchar(20),
    @byfk_Gerayesh tinyint,
    @ifk_term int,
    @guidErae_ID uniqueidentifier,
    @byGroup_Number tinyint,

AS
-- INSERT a new row in the table.
INSERT [dbo].[Tbl_Erae]
(
    [fk_Dars],
    [fk_Ostad],
    [fk_Gerayesh],
    [fk_term],
    [Erae_ID],
    [Group_Number]
)
VALUES
(
    @sfk_Dars,
    @sfk_Ostad,
    @byfk_Gerayesh,
    @ifk_term,
    ISNULL(@guidErae_ID, (newid())),
    @byGroup_Number
)

Мне нужно вернуть Erae_Id, когда он вставлен в таблицу, как я могу это сделать?

Можно ли использовать выходные переменные? Как?

Ответы [ 3 ]

2 голосов
/ 05 декабря 2011

Доступно предложение OUTPUT , в зависимости от вашей версии;однако в этом случае, вероятно, проще (поскольку у вас есть только одна строка) обрабатывать это отдельно:

IF @guidErae_ID IS NULL SET @guidErae_ID = NEWID()

, затем используйте @guidErae_ID "как есть" в INSERT (нет ISNULL)), а затем либо оканчиваются на:

SELECT @guidErae_ID

и используют var result = (Guid)command.ExecuteScalar(), либо отмечают @guidErae_ID как OUTPUT в определении параметра и запрашивают его после вызова command.ExecuteNonQuery().

1 голос
/ 05 декабря 2011

Если вам нужно вернуть значение в параметр @guidErae_ID, который вы включили, то вам нужно пометить параметр для вывода, а затем установить его в proc:

ALTER PROCEDURE [dbo].[pr_Tbl_Erae_Insert]
    @sfk_Dars varchar(20),
    @sfk_Ostad varchar(20),
    @byfk_Gerayesh tinyint,
    @ifk_term int,
    @guidErae_ID uniqueidentifier output,
    @byGroup_Number tinyint,

AS

If @guidErae_ID is null set @guidErae_ID = newid()

-- INSERT a new row in the table.
INSERT [dbo].[Tbl_Erae]
(
    [fk_Dars],
    [fk_Ostad],
    [fk_Gerayesh],
    [fk_term],
    [Erae_ID],
    [Group_Number]
)
VALUES
(
    @sfk_Dars,
    @sfk_Ostad,
    @byfk_Gerayesh,
    @ifk_term,
    @guidErae_ID,
    @byGroup_Number
)
0 голосов
/ 05 декабря 2011

в конце вашей хранимой процедуры просто добавьте еще одну строку, как это

return select Erae_Id WHERE [fk_Dars] = @sfk_Dars
    AND
    [fk_Ostad] = @sfk_Ostad
    AND
    [fk_Gerayesh] = @byfk_Gerayesh
    AND
    [fk_term] = @ifk_term
    AND
    [Group_Number] = @byGroup_Number
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...