开发环境d7+oracle8i,写了个过程,由输入的id查找匹配的记录,用dbexpress连接数据库并调用过程,发现第一次调用是正常无误的,在次调用时即使使用上次正确的输入参数,程序仍然报错,说是那个输入参数找不到,我又写了一个没有条件的查找过程,不管调用几次都没有错误,这是怎么回事呢?数周的问题了,不得其解。过程代码:
--返回指定日程ID的日程信息
procedure getschedulebyid(in_id in scott.task.task_id%type,rdata out pa_rcgl.mycursor) as
begin
open rdata for
select * from scott.task
where task_id=in_id;
end;
程序代码
//由输入ID查找日程
procedure Tfrmmain.cmdbyidClick(Sender: TObject);
var id:integer;
begin
if dmd.cds.Active then
dmd.cds.Close ;
id:=strtoint(txtid.Text );
dmd.sspbyid.Params.ParamByName('in_id').Value :=id;
try
dmd.dsp.DataSet :=dmd.sspbyid;
ds.DataSet:=dmd.cds;
dmd.cds.Open ; except
showmessage('err');
end;
end;
注:cds是clientdataset控件,sspbyid是sqlstroedproc控件,dsp是datasetprivder控件
--返回指定日程ID的日程信息
procedure getschedulebyid(in_id in scott.task.task_id%type,rdata out pa_rcgl.mycursor) as
begin
open rdata for
select * from scott.task
where task_id=in_id;
end;
程序代码
//由输入ID查找日程
procedure Tfrmmain.cmdbyidClick(Sender: TObject);
var id:integer;
begin
if dmd.cds.Active then
dmd.cds.Close ;
id:=strtoint(txtid.Text );
dmd.sspbyid.Params.ParamByName('in_id').Value :=id;
try
dmd.dsp.DataSet :=dmd.sspbyid;
ds.DataSet:=dmd.cds;
dmd.cds.Open ; except
showmessage('err');
end;
end;
注:cds是clientdataset控件,sspbyid是sqlstroedproc控件,dsp是datasetprivder控件
解决方案 »
- 我用Memo存储了编码,如何进行分解?
- 怪了,取拼音声母函数
- Tdatabase控件中的一个属性值的问题
- 调用存储过程出错!提示没有提供参数?这是怎么回事?
- 请指教自定义打印机需要那些控件?
- Delphi中怎么样隐藏或者显示系统托盘区
- cqzyf 接分 1
- 请教:为什么OLE自动化服务器的_TLB.pas文件必须跟客户程序放在同一个目录下?
- Delphi中DBGrid的OnCellClick事件
- ★★★快来抢100分★★★:在delphi里,求购用ado操作数据库的详细源代码,供学习研究?
- 有关delphi调用外部程序winexec,外部程序等待输入,如何自动结束?
- Delphi数据库访问方式太多了,易博龙公司推荐的是那种呢??
dmd.sspbyid.Params.Clear;
dmd.sspbyid.Params.CreateParam(ftInteger, 'in_id', ptInput).Value := id;
还有,你好歹把错误贴出来吧,你让别人怎么给你分析?
用oracle自带odbc驱动 + ado 试试吧