Разъяснение функции NewID () - PullRequest
       7

Разъяснение функции NewID ()

3 голосов
/ 14 сентября 2011

У меня есть хранимая процедура, которая принимает два параметра типа UniqueIdentifier

Когда я вызываю этот sproc с явным вызовом NewId() вместо одного из аргументов:

exec dbo.TestArgs newid, '34131101-04DE-4B97-8FAC-49C924F7BFCE'

сбой с:

Ошибка преобразования типа данных nvarchar в uniqueidentifier.

Но передача переменной, заполненной NewId(), в вызов - нормально*

DECLARE @painInTheArse UniqueIdentifier
SET @painInTheArse = NewID()

EXEC dbo.TestArgsnewid@painInTheArse,'34131101-04DE-4B97-8FAC-49C924F7BFCE'

отлично работает

Мне это кажется очень неправильным.Может кто-нибудь объяснить, пожалуйста?

1 Ответ

4 голосов
/ 14 сентября 2011

Параметры, передаваемые в хранимые процедуры, должны быть константами.См. этот вопрос .

Ваше решение сначала поместить результат вызова функции в параметр абсолютно правильно ...

...