程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> Oracle通過存儲過程如何正確返回數據集?

Oracle通過存儲過程如何正確返回數據集?

編輯:Oracle數據庫基礎

文章主要教會你如何正確的使用Oracle存儲過程使其返回相關的數據集的實際操作步驟,我們大家都知道在Oracle中存儲過程的返回相關的數據集主要作用是通過相關ref cursor類型數據的實際應用參數返回的,而返回數據的參數應該是out或in out類型的。

由於在定義Oracle存儲過程時無法直接指定參數的數據類型為:ref cursor,而是首先通過以下方法將ref cursor進行了重定義:

  1. create or replace package FuxjPackage is  
  2. type FuxjResultSet is ref cursor;  

還可以定義其他內容

  1. end FuxjPackage; 

再定義Oracle存儲過程:

  1. create or replace procedure UpdatefuxjExample 
    (sDM in char,sMC in char, pRecCur in out FuxjPackage.FuxjResultSet)  
  2. as  
  3. begin  
  4. update fuxjExample set mc=sMC where dm=sDM;  
  5. if SQL%ROWCOUNT=0 then  
  6. rollback;  
  7. open pRecCur for  
  8. select '0' res from dual;  
  9. else  
  10. commit;  
  11. open pRecCur for  
  12. select '1' res from dual;  
  13. end if;  
  14. end;  

  1. create or replace procedure InsertfuxjExample 
    (sDM in char,sMC in char, pRecCur in out FuxjPackage.FuxjResultSet)  
  2. as  
  3. begin  
  4. insert into FuxjExample (dm,mc) values (sDM,sMC);  
  5. commit;  
  6. open pRecCur for  
  7. select * from FuxjExample;  
  8. end;  

二、在Delphi中調用返回數據集的Oracle存儲過程

可以通過TstoredProc或TQuery控件來調用執行返回數據集的存儲,數據集通過TstoredProc或TQuery控件的參數返回,注意參數的DataType類型為ftCursor,而參數的ParamType類型為ptInputOutput。

使用TstoredProc執行UpdatefuxjExample的相關設置為:

  1. object StoredProc1: TStoredProc  
  2. DatabaseName = 'UseProc' 
  3. StoredProcName = 'UPDATEFUXJEXAMPLE' 
  4. ParamData = < 
  5. item 
  6. DataType = ftString 
  7. Name = 'sDM' 
  8. ParamType = ptInput 
  9. end  
  10. item  
  11. DataType = ftString 
  12. Name = 'sMC' 
  13. ParamType = ptInput 
  14. end  
  15. item  
  16. DataType = ftCursor 
  17. Name = 'pRecCur' 
  18. ParamType = ptInputOutput 
  19. Value = Null 
  20. end> 
  21. end   

以上的相關內容就是對Oracle存儲過程中返回數據集的介紹,望你能有所收獲。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved