-- start ---
-- 動態游標宣告 --
type my_type_cursor is ref cursor;
cur_sql my_type_cursor;
str_sql_cursor varchar2(4000);
-- 陣列宣告 用於存放游標中的rowid欄位 --
type my_type_table_rowid is table of rowid;
table_rowid my_type_table_rowid;
-- 陣列宣告 用於存放游標中的"姓名"字段 --
type my_type_name is table of varchar2(200);
table_name my_type_name;
table_new_name my_type_name;
-- 本地變數宣告 --
str_full_width varchar2(200);
str_half_withd varchar2(200);
num_limit_rows number;
str_sql_update varchar2(4000);
begin
str_full_width := f_get_hf(0);
str_half_withd := f_get_hf(1);
num_limit_rows := 1000;
str_sql_cursor := 'select ' || colname || ',' || 'f_trans_name(' ||
colname || ',''' || str_full_width || ''',''' ||
replace(str_half_withd,'''','''''') || '''),rowid rid from ' || owner || '.' ||
tabname;
str_sql_update := 'update ' || owner || '.' || tabname || ' set ' ||
colname || ' = :1,' || colstats ||
' = decode(length(:2),2,' || colstats || ',3,' ||
colstats || ',4,' || colstats || ',''28'')' ||
' where rowid = :3';
open cur_sql for str_sql_cursor;
loop
fetch cur_sql bulk collect
into table_name, table_new_name, table_rowid limit num_limit_rows;
forall i in 1 .. table_name.count execute immediate str_sql_update
using table_new_name(i), table_new_name(i),
table_rowid(i)
;commit;
exit when cur_sql%notfound;
end loop;
close cur_sql;
-- end --
游標的使用筆記
use sample db create table fruits f id int identity 1,1 primary key,水果id s id int not null,商id f name varchar 255 not null,水果名稱 f price decimal 8,2 no...
mysql的游標使用筆記
可以用在儲存過程的sql語句主要有以下型別 1 無返回結果語句,如 insert,update,drop,delete等 2 select語句返回單行變數並可傳給本地變數 select into 3 返回多行結果集的select語句,並可使用游標迴圈處理 注意,儲存過程返回的多行結果集,可以被客戶端...
游標變數REF COUSOR 動態游標 使用例項
對於顯示游標的使用,有四個步驟 1 定義游標 cursor cursorname is 2 開啟游標 open cursorname 3 運算元據 fetch cursorname 4 關閉游標 close cursor name 這個step絕對不可以遺漏。動態游標也都遵循這個步驟。一般在游標資料...