delphi中调用oracle的存储过程Word文档下载推荐.docx

上传人:b****5 文档编号:18120828 上传时间:2022-12-13 格式:DOCX 页数:5 大小:16.51KB
下载 相关 举报
delphi中调用oracle的存储过程Word文档下载推荐.docx_第1页
第1页 / 共5页
delphi中调用oracle的存储过程Word文档下载推荐.docx_第2页
第2页 / 共5页
delphi中调用oracle的存储过程Word文档下载推荐.docx_第3页
第3页 / 共5页
delphi中调用oracle的存储过程Word文档下载推荐.docx_第4页
第4页 / 共5页
delphi中调用oracle的存储过程Word文档下载推荐.docx_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

delphi中调用oracle的存储过程Word文档下载推荐.docx

《delphi中调用oracle的存储过程Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《delphi中调用oracle的存储过程Word文档下载推荐.docx(5页珍藏版)》请在冰豆网上搜索。

delphi中调用oracle的存储过程Word文档下载推荐.docx

,40);

cn3'

30);

commit;

2.建包:

CREATEORREPLACE 

PACKAGEPKG_JCCTEST1 

 

AS

typerc_classisrefcursor;

--求p1,p2的和与差,返回的多个值通过游标返回

procedureGetSubAndSum2(p1number,p2 

number,

ResultCursoroutrc_class);

--查询满足条件的数据集,返回数据集通过游标返回

procedureGetClass2(ainnumber,ResultCursoroutrc_class);

--往表中插一条记录,不返回结果集时,本人用AdoQuery调用(adodataset好象要求必须返回结果集)

procedureInsertClass(p_cidvarchar2,p_cnamevarchar2,

p_pnumbernumber);

endPKG_JCCTEST1;

3.建包体

PACKAGEBODYPKG_JCCTEST1

AS

procedureGetSubAndSum2(p1number,p2 

ResultCursoroutrc_class)

IS

BEGIN

openResultCursorfor

selectp1-p2as"

sum"

p1+p2as"

sub"

fromdual;

END;

procedureGetClass2(ainnumber,ResultCursoroutrc_class)

is

begin

openResultCursorfor

selectaaclass.*fromaaclasswherepnumber>

a;

end;

procedureInsertClass(p_cidvarchar2,p_cnamevarchar2,

p_pnumbernumber)

insertintoaaclassvalues(p_cid,p_cname,p_pnumber);

-- 

commit;

二.在delphi中利用AdoDataSet调用上述第一个存储过程

1.利用AdoConnection1连接数据库(驱动为oracleProviderforOLEDB),

**并在连接字符串中加入这一节:

PLSQLRSet=1;

如下所示:

Provider=OraOLEDB.Oracle.1;

Password=KXD;

PersistSecurityInfo=True;

UserID=KXD;

DataSource=TEST3;

PLSQLRSet=1

2.在窗体上加AdoDataSet1指明连接为上述AdoConnection1,下面可以放一个按钮,单击按钮就能调用第一步中创建的包过程,并返回数据集。

代码如下所示:

procedureTForm1.Button1Click(Sender:

TObject);

var

AResult,BResult:

integer;

ADODataSet1.Close;

ADODataSet1.CommandType:

cmdText;

ADODataSet1.Parameters.Clear;

//***利用call方法调用oracle过程时,参数必须由?

来传,即使你要传的参数为常理

//输出游标的参数不需要指定!

!

,本来此函数带三个参数,我们这里只需要传两个参数.

ADODataSet1.CommandText:

='

{callPKG_JCCTEST1.GetSubAndSum2(?

?

)}'

;

//***C顺序有关,createparam必须放在commandtext赋值语句之后.

//创建第一个参数,对应call中的第一个?

ftinteger为类型,10为长度,45为传入的实参值

ADODataSet1.Parameters.CreateParameter('

p1'

ftinteger,pdinput,10,45);

//创建第二个参数,根据createparameter的顺序自动与call中的第二个参数对应

p2'

ftinteger,pdinput,10,4);

//下面调用ADODataSet1的open方法,返回数据集(对应包过程的游标)

ADODataSet1.Open;

//根据存储过程,数据集只有一条记录,所以不需要用whiledo来遍历数据集,直接取数据了

//此处的字段名根据包过程中的返回游标对应的字段名来取

//定义的存储过程返回游标如:

// 

//把对应的字段值取出来即可

AResult:

=ADODataSet1.Fields.FieldByName('

sub'

).Value;

BResult:

sum'

//显示结果

showmessage(inttostr(AResult));

showmessage(inttostr(BResult));

end;

三.在delphi中利用AdoDataSet调用上述第二个存储过程

还是利用上述的AdoDataSet1来调用第二个存储过程,无需任何改动,加第二个按钮,单击时代码如下:

procedureTForm1.Button2Click(Sender:

,本来此函数带两个参数,我们这里只需要传一个参数.

{callPKG_JCCTEST1.GetClass2(?

ftinteger为类型,10为长度,20为传入的实参值

ftinteger,pdinput,10,20);

whilenotADODataSet1.Eofdo

begin

showmessage('

CID:

'

+string(ADODataSet1.FieldByName('

CID'

).Value)+

--CNAME:

'

+string(ADODataSet1.FieldByName('

CNAME'

--PNUMBER:

PNUMBER'

).Value)

);

ADODataSet1.Next;

end;

四利用adoquery调用第三个过程,不返回数据集的

procedureTForm1.Button3Click(Sender:

AdoQuery1.Close;

AdoQuery1.Parameters.Clear;

AdoQuery1.SQL.Clear;

AdoQuery1.SQL.Add('

);

AdoQuery1.Parameters.CreateParameter('

P1'

ftstring,pdinput,50,'

c11'

P2'

cn11'

P3'

ftinteger,pdinput,50,25);

AdoQuery1.ExecSQL;

五利用adoquery调用第一个过程,返回数据集的.

procedureTForm1.Button4Click(Sender:

ftinteger,pdinput,50,22);

AdoQuery1.Open 

Showmessage(string(AdoQuery1.FieldByName('

).Value)+'

-'

+

string(AdoQuery1.FieldByName('

).Value));

六.关于三层体系的此类问题

两层的解决了,三层类似.

中间层用tadodataset或tadoquery(+tdatasetprovider),中间层的adoconnection的连接字符串加上plsqlRset=1;

客户端用clientdataset,大同小异,举例如下:

//调用相应的过程

ClientDataSet1.Close;

ClientDataSet1.Params.Clear;

ClientDataSet1.CommandText:

{callPackageName.ProcedureName(?

ClientDataSet1.Params.CreateParam(ftInteger,'

ParamName1'

ptInput);

ClientDataSet1.Open;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 商业计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1