澄清NewID()函数

时间:2011-09-14 15:41:33

标签: sql-server tsql rdbms

我有一个存储过程,它接受两个UniqueIdentifier

类型的参数

当我通过显式调用NewId()来代替其中一个参数调用此sproc时:

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

它失败了:

  

将数据类型nvarchar转换为uniqueidentifier时出错。

但是将NewId()填充的变量传递给调用很好:

DECLARE @painInTheArse UniqueIdentifier
SET @painInTheArse = NewID()

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

完美运作

对我而言,这似乎非常错误。有人可以解释一下吗?

1 个答案:

答案 0 :(得分:4)

传递到存储过程中的参数必须是常量。请参阅this question

首先将函数调用结果放入参数的解决方案绝对正确...