ストアド・プロシージャ動的カーソルの使用例
データテーブルの構造は次のとおりです.
指定された電話とある年月の電話記録を表示し、ストレージ・プロシージャを使用して実現します.
SQL> desc record;
Name Type Nullable Default Comments
----------- ------------ -------- ------- --------
RECORD_GUID VARCHAR2(50) Y
DNIS VARCHAR2(15) Y
ANI VARCHAR2(15) Y
STARTTIME DATE Y
ENDTIME DATE Y
STAFFID VARCHAR2(10) Y
AGENTID VARCHAR2(10) Y
EXTENSION VARCHAR2(20) Y
指定された電話とある年月の電話記録を表示し、ストレージ・プロシージャを使用して実現します.
create or replace procedure proc_getrecord(i_dnis in varchar2,
i_time in varchar2)
/*
:
:i_dnis ,i_time ( 201401)
:2014.06.26
*/
as
sqlstr varchar2(5000);
begin
declare
type rc is ref cursor;
c_rc rc;
r_record record%rowtype;
begin
sqlstr:='select * from king.record where dnis =:1’||
' and replace(substr(starttime, 1, 7), ''-'', '''')=:2';
open c_rc for sqlstr using i_dnis,i_time;
fetch c_rc into r_record;
while c_rc%found loop
dbms_output.put_line(
' :'||r_record.starttime||' '||
' :'||r_record.endtime||' '||
' :'||r_record.dnis||' '||
' :'||r_record.ani);
fetch c_rc into r_record;
end loop;
close c_rc;
end;
end;