用户定义的函数在sql server中返回null

时间:2011-07-25 11:13:09

标签: sql sql-server sql-server-2005 function

我在sql server 2005中创建了一个用户定义的标量函数,我希望它根据传递的参数名称返回id。但是以下函数总是返回null,即使表中已存在传递名称。有谁能告诉我原因?

create function IsNameExist(@Name varchar)
returns int
As
Begin
Declare @Id int
Select @Id = ProductId from [Product] where ProductName = @Name
return @Id
End

1 个答案:

答案 0 :(得分:6)

请注意,您没有指定函数参数数据类型的长度。因此,在这种情况下,默认情况下它变为1,并且您在函数内的查询失败。试试这个,看看

create function 
IsNameExist(@Name varchar(100)) 
returns int As 
Begin 
Declare @Id int 
Select @Id = ProductId from [Product] where ProductName = @Name 
return @Id 
End 

另请参阅此帖 http://beyondrelational.com/blogs/madhivanan/archive/2007/12/04/column-length-and-data-length.aspx