下载后可任意编辑【delphi+oracle 报表解决方案(一)】delphi 中调用 oracle 的存储过程(分带返回游标,不返回值两种) 关键字: delphi ,oracle 存储过程,游标,返回数据集,报表注:delphi 6+ oracle 8.1.6一.创建包与包体1.附:建表 aaclass 为下面作测试用create table aaclass(CID VARCHAR2(50), CNAME VARCHAR2(50), pnumber NUMBER(10,0) );INSERT INTO aaclass values('c1', 'cn1', 10 ) ;INSERT INTO aaclass values('c2', 'cn2', 40 ) ;INSERT INTO aaclass values('c1', 'cn3', 30 ) ;commit;2.建包:CREATE OR REPLACE PACKAGE PKG_JCCTEST1 下载后可任意编辑AS type rc_class is ref cursor; --求 p1,p2 的和与差,返回的多个值通过游标返回 procedure GetSubAndSum2(p1 number,p2 number , ResultCursor out rc_class); --查询满足条件的数据集,返回数据集通过游标返回 procedure GetClass2(a in number,ResultCursor out rc_class ) ; --往表中插一条记录,不返回结果集时,本人用 AdoQuery 调用(adodataset 好象要求必须返回结果集) procedure InsertClass( p_cid varchar2 ,p_cname varchar2 , p_pnumber number) ;end PKG_JCCTEST1; 下载后可任意编辑3.建包体CREATE OR REPLACE PACKAGE BODY PKG_JCCTEST1 ASprocedure GetSubAndSum2(p1 number,p2 number , ResultCursor out rc_class)ISBEGIN open ResultCursor for select p1-p2 as "sum", p1+p2 as "sub" from dual;END ;procedure GetClass2(a in number,ResultCursor out rc_class )isbegin open ResultCursor for select aaclass.* from aaclass where pnumber >a;下载后可任意编辑end ;procedure InsertClass( p_cid varchar2 ,p_cname varchar2 , p_pnumber number) isbegin insert into aaclass values(p_cid,p_cname,p_pnumber) ;-- commit;end ; 二.在 delphi 中利用 AdoDataSet 调用上述第一个存储过程1.利用 AdoConnection1 连接数据库(驱动为 oracle Provider for OLE DB), **并在连接字符串中加入这一节: PLSQLRSet=1; 如下所示:Provider=OraOLEDB.Oracle.1;Password=KXD;Persist Security Info=True;User ID=KXD;Data Source=TEST3;PLSQLRSet=1下载后可任意编辑2.在窗体上加 AdoDataS...