create or replace procedure users_procedure is cursor users_cursor is select * from users; v_id users.id%type; v_username users.username%type; v_password users.password%type; begin open users_cursor; fetch users_cursor into v_id, v_username, v_password; while users_cursor%found loop dbms_output.put_line('v_id = ' || v_id || 'v_username = ' || v_username || 'v_password = ' || v_password); fetch users_cursor into v_id, v_username, v_password; end loop; close users_cursor; end; / create or replace procedure users_batch_insert_procedure is v_id users.id%type; v_username users.username%type; v_password users.password%type; begin for i in 0..1000 loop v_id := i; v_username := 'abc' || i; v_password := 'efg' || i; insert into users values(v_id, v_username, v_password); commit; end loop; end; / create or replace procedure users_a is type users_cursor_type is ref cursor; --return users%rowtype; type users_record_type is record (v_id users.id%type, v_username users.username%type, v_password users.password%type); v_sql varchar2(2000); users_cursor_a users_cursor_type; users_record users_record_type; begin v_sql := 'select * from users'; open users_cursor_a for v_sql; fetch users_cursor_a into users_record; while users_cursor_a%found loop dbms_output.put_line('v_id = ' || users_record.v_id || 'v_username = ' || users_record.v_username || 'v_password = ' || users_record.v_password); fetch users_cursor_a into users_record; end loop; close users_cursor_a; end; / create or replace procedure users_a is type users_cursor_type is ref cursor return users%rowtype; v_row users%rowtype; v_sql varchar2(2000); users_cursor_a users_cursor_type; begin open users_cursor_a for select * from users; fetch users_cursor_a into v_row; while users_cursor_a%found loop dbms_output.put_line('v_id = ' || v_row.id || 'v_username = ' || v_row.username || 'v_password = ' || v_row.password); fetch users_cursor_a into v_row; end loop; close users_cursor_a; end; / set serveroutput on size 1000000;