这个存储过程怎么用?? (100分)

  • 主题发起人 lovewh119
  • 开始时间
L

lovewh119

Unregistered / Unconfirmed
GUEST, unregistred user!
存储这程:
create procedure timerout
@dater datetime out ,
@timer datetime out ,
@things varchar (100) out
as
select @dater=dater ,
@timer=timer ,
@things=things from timert(表名)
然后在一个Delphi事件里
var
dater:Tdate;
timer:TTime;
str:string;
begin
ADOStoredProc1.ExecProc;
然后这里怎么写??才能把ADOStoredProc1里的记录一条一条的赋值给上面的变量??
要是能用到光标(Cursor)就更好,最好是写出代码来,谢谢了`~
end;
 
ADOStoredProc1.Parameters.ParamByName('@dater').Value := dater;
ADOStoredProc1.Parameters.ParamByName('@timer').Value := timer;
ADOStoredProc1.Parameters.ParamByName('@things').Value := str;
这样即可
 
那向"下雨了"这样写的话,也只是赋了第一条记录而已呀,那么下一条呢,不好意思,我比较菜`~
 
你把ADOStoredProc1.ExecProc;改为ADOStoredProc1.Open;
ADOStoredProc1对象可以象数据集一样操作,用循环,查找等可以操作


 
我都照你们说的试了几次,都不行呀`~各位帮看一个,是不是存储过程没有写好`~
 
把你的意思写的在具体一些
 
ADOStoredProc1.first;
while not ADOStoredProc1 eof do begin
ADOStoredProc1.Parameters.ParamByName('@dater').Value := dater;
ADOStoredProc1.Parameters.ParamByName('@timer').Value := timer;
ADOStoredProc1.Parameters.ParamByName('@things').Value := str;
ADOStoredProc1.next;
end;
 
存储过程可直接返回结果集, 可改为:
create procedure timerout
as
select dater, timer, things
from timert(表名)
go
Delphi 中:
with ADOStoredProc1do
begin
Open;
//循环赋值, 但这样并不行,你需要创建动态数组来接收赋值
while not eof do begin
dater :=Fields[0].value; // etc.
end;
end;

 
多人接受答案了。
 
顶部