文章主要教會你如何正確的使用Oracle存儲過程使其返回相關的數據集的實際操作步驟,我們大家都知道在Oracle中存儲過程的返回相關的數據集主要作用是通過相關ref cursor類型數據的實際應用參數返回的,而返回數據的參數應該是out或in out類型的。
由於在定義Oracle存儲過程時無法直接指定參數的數據類型為:ref cursor,而是首先通過以下方法將ref cursor進行了重定義:
- create or replace package FuxjPackage is
- type FuxjResultSet is ref cursor;
還可以定義其他內容
- end FuxjPackage;
再定義Oracle存儲過程:
- 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中調用返回數據集的Oracle存儲過程
可以通過TstoredProc或TQuery控件來調用執行返回數據集的存儲,數據集通過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存儲過程中返回數據集的介紹,望你能有所收獲。