在 Oracle Database 中,
rowid 是資料值, 但也可以是一種資料型態.
參考下面範例, 就可以明瞭 :
建立一個測試 Table
create table tomTest (
aa varchar2(100)
, bb number
);
-- 新增 Temp Data
insert into tomTest values( 'a', 1000 );
insert into tomTest values( 'b', 2000 );
insert into tomTest values( 'c', 3000 );
insert into tomTest values( 'd', 4000 );
insert into tomTest values( 'e', 5000 );
commit;
建立一個 Function, 以 rowid 當作參數的資料型態
create or replace function tom_check_number_f( p_rowid rowid ) return boolean is
v_data number;
begin
select bb
into v_data
from tomTest
where rowid = p_rowid;
if v_data >= 3000 then
return true;
else
return false;
end if;
end;
主程式碼, 執行上面 Function
declare
cursor cur_data is
select rowid
, t.aa
from tomTest t;
begin
for rec_data in cur_data loop
if tom_check_number_f( rec_data.rowid ) then
dbms_output.put_line( rec_data.aa || ' >= 3000' );
else
dbms_output.put_line( rec_data.aa || ' < 3000' );
end if;
end loop;
end;
-- 執行結果 :
a < 3000
b < 3000
c >= 3000
d >= 3000
e >= 3000