oracle存儲過程中應用動態sql

需求背景:對有些數據庫操作較多的功能算法需求,或使用應用程序代碼多次連接操作數據,會造成較大性能損耗,或者系統動態參數化如要查詢的表名是存在數據庫裏的,爲節減網絡連接開銷,建議使用存儲過程實現數據庫操作需求的算法。動態sql ,意思是sql語句並不是事先明確的,而是可根據參數變化的,通常是我們在存儲過程中拼接生成sql字符串,並執行這個字符串返回結果。


1.創建存儲過程語法:
  CREATE OR REPLACE PROCEDURE 存儲過程名稱( 參數列表)
  Is
    變量定義;
  Begin
     邏輯實現;
  End 存儲過程名稱;
例子:
 CREATE OR REPLACE PROCEDURE GZGPORTAL.POSITION_JOB_PAY(
orgUnitLongNumber varchar2,
isSub char,
beginYearMonth varchar2,
endYearMonth varchar2,
isPosition char,
returnSet  OUT sys_refcursor    //返回值 ,遊標類型,可用於返回結果集
)
IS
   horTableName varchar2(30);
   hisTableName varchar2(30);
   insertSQL VARCHAR2(2000);
Begin
 。。。。。

End  POSITION_JOB_PAY ;

 

2.存儲過程動態sql
  sqlstr := 'delete t_temp_orgSecheme' ;
  EXECUTE IMMEDIATE (sqlstr);
  Commit;


3.執行動態sql 返回結果集
  returnSet  OUT sys_refcursor ;  定義返回值變量,遊標類型
  open  returnSet  for
  select * from table;
  return returnSet;

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章