以下的文章主要介绍的是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 setmc=sMCwheredm=sDM;
if SQL%ROWCOUNT=0then
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通过存储过程中返回数据集的描述,希望会给你带来一些帮助在此方面。
【编辑推荐】
【责任编辑:孙巧华 TEL:(010)68476606】
点赞 0