来看看这个存储过程的返回值!

JUSTHELP 2004-04-30 09:59:41
存储过程如下:
CREATE PROCEDURE Getid
( @ID_COUNT INT OUTPUT )
AS
UPDATE TEST SET IDX= IDX + 1

SELECT @ID_COUNT=IDX FROM TEST

RETURN @ID_COUNT
GO

执行代码如下:
procedure TForm1.Button2Click(Sender: TObject);
var
ids :string;
x:integer;
begin
ADOSP1.ExecProc;
showmessage(adosp1.Parameters.ParamByName('@id_count').value);//这里返回的是字符串类型,
x := adosp1.Parameters.ParamByName('@id_count').Value;//这里却能付给int类型
showmessage(format('%0.4d',[x]));
ids := format('%0.4d',[strtoint(adosp1.Parameters.ParamByName('@id_count').value)]);//这里没有strtoint执行会报错!
showmessage(ids) ;
end;
以上代码借调试通过!3个show的结果分别是这种格式:23,0023,0023

可以看到@id_count定义的是个INT类型,,但返回的时候却不知道是什么类型!
从结果看应该是string,但却能付给integer,还执行正确???
...全文
96 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
JUSTHELP 2004-04-30
  • 打赏
  • 举报
回复
忘了说了adosp1是adostroedproc,通过ADOSP1.ExecProc;调用getid,
CREATE PROCEDURE Getid
( @ID_COUNT INT OUTPUT )
AS
存储过程的开头就定义@ID_COUNT 了阿,它是adoap1的返回值
outwindows 2004-04-30
  • 打赏
  • 举报
回复
执行的代码看不大明,你在哪里调用的存储过程 Getid 呢
showmessage(adosp1.Parameters.ParamByName('@id_count').value);//这里返回的是字符串类型,
-------------------------------------------^@id_count是哪里定义的呢,下同
x := adosp1.Parameters.ParamByName('@id_count').Value;//这里却能付给int类型
zheninchangjiang 2004-04-30
  • 打赏
  • 举报
回复
自动转换

34,838

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧