在開發中,經常會碰到動態表名的游標的寫法,正好在工作中碰到乙個,如下所示:
declare
stralltable varchar2(100);
type cur_typ is ref cursor;
c cur_typ;
c_id number(18);
c_code varchar2(100);
begin
for c_table in (select t.table_name
from user_tab_columns t
where t.table_name like upper('pne_%')
and t.column_name = 'code') loop
stralltable := 'select id,code from ' ||
c_table.table_name;
open c for stralltable;
loop
fetch c
into c_id, c_code;
exit when c%notfound;
-- 此處可以寫自已的處理**
end loop;
close c;
end loop;
end;
動態游標的寫法
在變數宣告部分定義的游標是靜態的,不能在程式執行過程中修改。雖然可以通過引數傳遞來取得不同的資料,但還是有很大的侷限性。通過採用動態游標,可以在程式執行階段隨時生成乙個查詢語句作為游標。要使用動態游標需要先定義乙個游標型別,然後宣告乙個游標變數,游標對應的查詢語句可以在程式的執行過程中動態地說明。定...
oracle動態游標
declare v col1 varchar2 254 v col2 varchar2 254 v sql varchar2 1024 type my cursor is ref cursor v cur my cursor begin v sql select 1,2 from dual wher...
oracle 動態游標
今天寫了個動態游標 使用傳入引數 關於游標分類以及用法 思路就是先拼好sql 然後開動態游標 oralce10g也支援正規表示式 呵呵 剛剛好可以實現動態傳入引數 procedure tj pda testdata v indicator in varchar is type rc is ref c...