動態游標使用筆記

2021-06-07 06:41:07 字數 1650 閱讀 5454

-- 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絕對不可以遺漏。動態游標也都遵循這個步驟。一般在游標資料...