任何人都可以帮我找到SP的错误

时间:2011-08-08 07:16:40

标签: sql-server-2008

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。 有人可以帮我找错吗?

2 个答案:

答案 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的参数等。

相关问题