1.定義:
type ref_cur is ref cursor;
2.動態cursor作為out引數 儲存過程的實現
舉個最簡單的例子,根據table name動態獲取cursor
procedure p_get_cur(i_table_name in varchar2, o_ref_cur out ref_cur) as
begin
if upper(i_table_name) = 't_bank_account' then
open o_ref_cur for
select bank_account
from t_bank_account
where bank_account is not null;
elsif upper(i_table_name) = 't_fb_payment_jp' then
open o_ref_cur for
select bank_account
from t_fb_payment_jp
where bank_account is not null;
end if;
end p_get_cur;
procedure p_bank_acco_mask(i_table_name in varchar2,
i_coulumn in varchar,
o_error_str in out varchar2,
o_result in out number,
m_has_exception in out boolean) as
v_update_sql varchar(800);
v_update_sql2 varchar(800);
i int := 1;
v_bank_account varchar2(50);
v_bank_account_new varchar2(50);
v_char varchar(1);
v_bank_account_curs ref_cur;
v_select_sql varchar2(800);
begin
o_result := pkg_ls_pub_code_cst.batch_result__success;
--procedure返回記錄集:
----------------------宣告乙個package--------------
create or replace package pkg_test
as typemyrctypeis ref cursor;
procedure get_r(p_id number,p_rc out myrctype); --package中宣告名為get 的procedure(只有介面沒內容)
end pkg_test;
-----------------宣告package body,即上面package中的內容,包括procedure get---------------------
create or replace package body pkg_test
as procedure get_r(p_id number,p_rc out myrctype)
is sqlstr varchar2 (500);
begin
if p_id = 0 then
open p_rc for
select id, name, ***, address, postcode, birthday
from student;
else
sqlstr :=
'select id,name,***,address,postcode,birthday
from student where id=:w_id'; --w_id是個引數,
--以下 p_rc是個ref cursor游標型別,而且是out型引數,即可返回乙個記錄集了。using p_id就是替換上面sql中:w_id值拉:)
open p_rc for sqlstr using p_id;
end if;
end get;
end pkg_test;
--function返回記錄集的例子,原理和上面相同,而是用function的return值來返回記錄集。
函式返回記錄集:
建立帶ref cursor定義的包和包體及函式:
複製** **如下:
create or replace
package pkg_test as
type myrctype is ref cursor;
function get_r(intid number) return myrctype;
end pkg_test;
/ create or replace
package body pkg_test as
--函式體
function get_r(intid number) return myrctype is
rc myrctype; --定義ref cursor變數
sqlstr varchar2(500);
begin
if intid=0 then
ref cursor 在plsql中的一例
ref cursor 可以作為c 的資料庫介面,但是在plsql中如何引用呢 舉乙個例子 set serveroutput on declare v tab name varchar2 20 v version varchar2 10 v tab crt str varchar2 2000 v ta...
定義動態陣列
開闢一維陣列m 8 int t new int m 開闢一維動態陣列,相當於t m int t new int 8 開闢乙個空間為8的整型陣列空間 int t new int 8 開闢了乙個整型且賦值為8的空間 int t new int 開闢單變數位址空間,即將int型別的空間位址賦給指標t 銷毀...
UITableView的cell 動態 定義 高度
首先在uitableview 的 方法中算出每個cell 的真實高度,然後設定便ok。如下 html view plain copy uitableviewcell tableview uitableview tableview cellforrowatindexpath nsindexpath i...