create function Fun12(@InsCd varchar)
returns varchar(100)
as
begin
declare @ret varchar(52)
set @ret = (select [InsName] from [Assignment4].[dbo].[1466]
where rtrim(ltrim([InsCd]))= @InsCd)
return @ret
end
执行:
declare @r varchar(50)
exec @r = dbo.Fun12 '436'
select @r
我的价值为NULL
。
有人可以帮我找错吗?
答案 0 :(得分:2)
您需要为参数@InsCd
指定尺寸。
有些类似的事情,但您可能希望使用除20
之外的其他值,具体取决于字段InsCd
的大小。
create function Fun12(@InsCd varchar(20))
答案 1 :(得分:0)
首先,您应该确保在SQL Server Management Studio(SSMS)中直接运行时,函数包含的代码实际返回了一些内容:
-- SQL
select InsName from [1466] where rtrim(ltrim([InsCd])) = '436';
在这种情况下,我会使用存储过程而不是函数。您还可以使用SSMS Profiler(工具> Profiler)来监控SQL Server的流量。这样,您实际上可以看到执行的内容,查看SP的参数等。