create or replace PROCEDURE p_cursor_test
(AS_XTDBMC Varchar2 )
AS
-- declare cursor
cursor cursor_xttdata(LS_ZTMC VARCHAR2) Is
SELECT xtdbmc
FROM (select 1 xtdbmc, 'a' xtztmc from dual union
select 2 xtdbmc, 'b' xtztmc from dual union
select 3 xtdbmc, 'c' xtztmc from dual
) a
WHERE a.xtztmc = LS_ZTMC ;
row_xttdata cursor_xttdata%Rowtype;
Begin
--open
Open cursor_xttdata(AS_XTDBMC);
Loop
Fetch cursor_xttdata
Into row_xttdata;
Exit When cursor_xttdata%Notfound;
DBMS_OUTPUT.PUT_LINE(row_xttdata.xtdbmc);
End Loop;
Close cursor_xttdata;
EXCEPTION
WHEN OTHERS THEN
RAISE_APPLICATION_ERROR(-20001, substr(SQLERRM, 0, 500));
END;
Test
DECLARE
AS_XTDBMC VARCHAR2(200);
BEGIN
AS_XTDBMC := 'b';
P_CURSOR_TEST(
AS_XTDBMC => AS_XTDBMC
);
--rollback;
END;