我在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
答案 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