Вернуть GUID из вставки хранимой процедуры - PullRequest
2 голосов
/ 11 июля 2011

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

Я знаю, что мог бы сгенерировать GUID в процедуре и возвратить его каким-то образом из этого, но я 'мы хотели бы избежать его генерации там, поскольку он имеет значение по умолчанию для строки первичного ключа (guid).Я вспоминаю функцию, подобную SCOPE_IDENTITY, для возврата столбца идентификаторов, который вы только что использовали, что-нибудь похожее на GUID?

Помощь приветствуется!Спасибо :)

Ответы [ 2 ]

5 голосов
/ 11 июля 2011

Вы можете использовать предложение вывода из оператора вставки.

Возврат как набор результатов из SP, как это.ID является уникальным идентификатором со значением по умолчанию newid ().

insert into YourTable(Col1)
output inserted.ID 
values (1)

Или захватите переменную таблицы и выполните все, что вам нужно после этого.

declare @T table(ID uniqueidentifier)

insert into YourTable(Col1)
output inserted.ID into @T 
values (1)

select *
from @T
2 голосов
/ 11 июля 2011

Нет, нет SCOPE_GUID () или чего-то подобного.Почему вас волнует, используете ли вы значение по умолчанию, определенное в столбце, или если вы объявляете это значение самостоятельно и вставляете его вручную?Если бы вы использовали NEWSEQUENTIALID (), я бы понял, но для NEWID () я бы просто сказал, сначала создайте его и вставьте вручную.Это позволит вам вернуть сгенерированное значение без повторного запроса к таблице (вам нужно будет идентифицировать новую строку другим способом).SQL Server не будет обижен, если вы не используете значение по умолчанию;это запасной вариант, если значение не указано явно.

...