以下的文章主要介绍的是Oracle通过存储过程中返回相关数据集的实际操作方案,我们首先要了解的是如何正确的使用存储过程来返回数据集,我们大家都知道Oracle数据库中的存储过程返回数据集是Oracle通过ref cursor类型数据的参数返回的。
而返回数据的参数应该是out或in out类型的,由于在定义存储过程时无法直接指定参数的数据类型为:ref cursor,而是首先Oracle通过以下方法将ref cursor进行了重定义:
- create or replace package FuxjPackage is
- type FuxjResultSet is ref cursor;
还可以定义其他内容
- end FuxjPackage;
再定义存储过程:
- create or replace procedure UpdatefuxjExample (sDM in char,sMC in char, pRecCur in out FuxjPackage.FuxjResultSet)
- as
- begin
- update fuxjExample set mc=sMC where dm=sDM;
- if SQL%ROWCOUNT=0 then
- rollback;
- open pRecCur for
- select '0' res from dual;
- else
- commit;
- open pRecCur for
- select '1' res from dual;
- end if;
- end;
和
- create or replace procedure InsertfuxjExample
(sDM in char,sMC in char, pRecCur in out FuxjPackage.FuxjResultSet)- as
- begin
- insert into FuxjExample (dm,mc) values (sDM,sMC);
- commit;
- open pRecCur for
- select * from FuxjExample;
- end;
在Delphi中调用返回数据集的存储过程
可以通过TstoredProc或TQuery控件来调用执行返回数据集的存储,数据集Oracle通过TstoredProc或TQuery控件的参数返回,注意参数的DataType类型为ftCursor,而参数的ParamType类型为ptInputOutput。
使用TstoredProc执行UpdatefuxjExample的相关设置为:
- object StoredProc1: TStoredProc
- DatabaseName = 'UseProc'
- StoredProcName = 'UPDATEFUXJEXAMPLE'
- ParamData = <
- item
- DataType = ftString
- Name = 'sDM'
- ParamType = ptInput
- end
- item
- DataType = ftString
- Name = 'sMC'
- ParamType = ptInput
- end
- item
- DataType = ftCursor
- Name = 'pRecCur'
- ParamType = ptInputOutput
- Value = Null
- end>
- end
上述的相关内容就是对Oracle通过存储过程中返回数据集的描述,希望会给你带来一些帮助在此方面。
当前名称:Oracle通过其实际存储过程中返回相关数据集
链接地址:http://www.shufengxianlan.com/qtweb/news30/454330.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联