存储过程的返回参数值,这样写为什么出错?(42分)

  • 主题发起人 主题发起人 dana
  • 开始时间 开始时间
D

dana

Unregistered / Unconfirmed
GUEST, unregistred user!
我就写了这样存储过程
CREATE PROCEDURE [test]
@lsno int output
AS
select @lsno select in1 from demo
调用
var ls:variant;
begin
with SP_jszd do
begin
ExecProc;
ls:=Parameters.ParamByName('@lsno').Value;
showmessage(inttostr(ls1)); 错误提示“invalid variant type conversion”
//如果将ls定义为数值型也是同样出错,这是为什么?
end;
end;

 
你的存储过程所返回的@lsno值为null,则调用inttostr(ls1)时就会报
“invalid variant type conversion” 的错误。
解决办法:最好避免@lsno输出空值,如给其赋初值为0等等
 
返回值不是0,事实上返回值是1,可就是无法显示出来,都是出现这样的错误提示
我当前数据库就只有一条记录,且 in1字段的值是1,为什么会是空呢?


 
在我机器上测试正常,delphi5+Sql Server2000
只不过你的
‘showmessage(inttostr(ls1))’中应改为‘showmessage(inttostr(ls))’
 
改一下存儲過程:
select @lsno=in1 from demo
同時將SP_jszd 控件的params中的@lsno的屬性
Value中的Type改為Integer.
還有同樓上說的注意是否寫錯變量。

 
改为这样也不行啊,为什么?
select @lsno=in1 from demo



 
在最后加一句 select @lsno,在delphi调用执行时好象也要先付值的,虽然是output.
 
对不起,我讲错了原来数据库是null,谢谢各位!
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部