当数据类型正确时,为什么此函数返回0行?

时间:2010-05-26 14:12:40

标签: sql-server

当函数定义如下时,它将返回正确的行。

ALTER FUNCTION [dbo].[exampleFunction](
 @GUID VARCHAR(20)--NUMERIC(16,0)
,@BrowseName VARCHAR(200)
)

但是当我使用数字(16,0),这是正在传递的数据的正确数据类型时,我会收到0行。

ALTER FUNCTION [dbo].[exampleFunction](
 @GUID NUMERIC(16,0)
,@BrowseName VARCHAR(200)
)

该函数返回BIT。基本上该函数找到GUID然后比较BrowseTreeName。

任何人都知道这是为什么?

由于

1 个答案:

答案 0 :(得分:2)

根据您的参数名称(@GUID)进行猜测,但GUID实际上并非“数字”,请参阅uniqueidentifier (Transact-SQL)。 16字节的GUID值无法正确映射到数字(16,0)。

为什么不将@GUID参数定义为uniqueidentifier数据类型?