我想用ADODataSet调用返回数据集的存储过程
存储过程
create or replace package pak_pantest
as
type pan_cursor is ref cursor;
procedure getpan(p_id in number,resustcor out pan_cursor);
end pak_pantest;create or replace package body pak_pantest
is
procedure getpan(p_id in number,resustcor out pan_cursor)
is
begin
open resustcor for
select t.* from bcsent t where p_id > t.crment_id;
end;
end pak_pantest;delphi代码type
TForm1 = class(TForm)
con1: TADOConnection;
ds1: TADODataSet;
btn1: TButton;
mm1: TMemo;
procedure btn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.btn1Click(Sender: TObject);
var
s:string;
begin
ds1.Close;
ds1.CommandType := cmdText;
ds1.Parameters.Clear;
ds1.CommandText := '{call pak_pantest.getpan(?)}';
ds1.Parameters.CreateParameter('p1',ftInteger,pdInput,10,4);
ds1.Open;
while not ds1.Eof do
begin
s :='';
s := s + '名字:' + string(ds1.FieldByName('CRMENT_NAME').Value);
mm1.Lines.Add(s);
s :='';
s := s + 'ID:' + string(ds1.FieldByName('crment_id').Value);
mm1.Lines.Add(s);
ds1.Next;
end
end;
当我点击btn1按钮时,弹出“列不存在”的错误,并且我调试发现 程序走到while not ds1.Eof do,弹出“列不存在”的错误,求教是什么原因?
存储过程
create or replace package pak_pantest
as
type pan_cursor is ref cursor;
procedure getpan(p_id in number,resustcor out pan_cursor);
end pak_pantest;create or replace package body pak_pantest
is
procedure getpan(p_id in number,resustcor out pan_cursor)
is
begin
open resustcor for
select t.* from bcsent t where p_id > t.crment_id;
end;
end pak_pantest;delphi代码type
TForm1 = class(TForm)
con1: TADOConnection;
ds1: TADODataSet;
btn1: TButton;
mm1: TMemo;
procedure btn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.btn1Click(Sender: TObject);
var
s:string;
begin
ds1.Close;
ds1.CommandType := cmdText;
ds1.Parameters.Clear;
ds1.CommandText := '{call pak_pantest.getpan(?)}';
ds1.Parameters.CreateParameter('p1',ftInteger,pdInput,10,4);
ds1.Open;
while not ds1.Eof do
begin
s :='';
s := s + '名字:' + string(ds1.FieldByName('CRMENT_NAME').Value);
mm1.Lines.Add(s);
s :='';
s := s + 'ID:' + string(ds1.FieldByName('crment_id').Value);
mm1.Lines.Add(s);
ds1.Next;
end
end;
当我点击btn1按钮时,弹出“列不存在”的错误,并且我调试发现 程序走到while not ds1.Eof do,弹出“列不存在”的错误,求教是什么原因?
解决方案 »
- Invalid use of keyword Token:when请问是怎么回事?
- 我想用 com+ 传送 作为对象的参数!如何?
- 一个比较简单的问题!delphi错误信息!
- 基础问题
- 哪位大哥知道下面语句是什么意思?
- 怎么结束Delphi的调试状态?
- 我准备考古!Delphi1.0;vb1.0;java 1.0那儿下载阿?
- 正式准备学DELPHI,望以后老鸟们教教,选送100,当作见面礼...
- 我想把數據從遠端下載到本地﹐然后過濾出一些數據﹐從中選擇一條記錄編輯﹐如何做到?
- 如何实际:检测当鼠标单击某一按钮是启动某一函数啊?
- CXDBcombobox下拉中添加dbgrid中的一列内容?
- DELPHI中如何取得 重载函数的地址?
begin //Provider=MSDAORA.1;Password=manager;User ID=system;Data Source=orcl;Persist Security Info=True
Connection:= self.ADOConnection1;
ProcedureName:='pak_pantest.getpan';
Parameters.Clear;
Parameters.CreateParameter('p1',ftInteger,pdInput,10,4);
Open; ......
end;
这种情况下怎么关闭游标?
还是说在delphi端ADOStoredProc1.close之后就会自动关闭游标?