1、删除一个用户下的所有表;
begin for operation in (select 'DROP TABLE ' || table_name as droptable from user_tables) loop execute immediate operation.droptable; end loop; end;
2、嵌套表结合bulk collect的用法
declare type employee_table is table of employee%rowtype; employee_temp employee_table; begin select * bulk collect into employee_temp from employee where id != 1; dbms_output.put_line(employee_temp(1).name); end;
3、Fall和bulk collect用法一例
declare type employee_table is table of employee%rowtype; employee_temp employee_table; begin select * bulk collect into employee_temp from employee where id != 1; forall i in 1..employee_temp.count insert into employee1 values employee_temp(i);--此处要用行记录,而不能用行的字段 end;
4、 在DML的返回语句中使用BULK COLLECT子句
declare type employee_table is table of employee%rowtype; employee_temp employee_table; begin delete from employee where id=&id returning id,name bulk collect into employee_temp; end;
5、显示游标使用一例
declare cursor emp_cursor is --定义游标 select id, name from employee; v_id employee.id%type; v_name employee.name%type; begin open emp_cursor;--打开游标 loop fetch emp_cursor --提取数据 into v_id, v_name; dbms_output.put_line(v_id || v_name); exit when emp_cursor%notfound; end loop; close emp_cursor;--关闭游标 end;
6、游标FOR循环使用一例
declare cursor emp_cursor is select id, name from employee; begin for emp_record in emp_cursor loop dbms_output.put_line(emp_record.id || emp_record.name); end loop; end; --直接在游标for循环中直接使用子查询 begin for emp_record in (select id,name from employee) loop dbms_output.put_line(emp_record.id || emp_record.name); end loop; end;
7、游标变量使用一例
declare type emp_record_type is ref cursor return employee%rowtype;--定义游标变量 emp_cursor emp_record_type; emp_record employee%rowtype; begin open emp_cursor for select id, name from employee;--打开游标变量 loop fetch emp_cursor into emp_record;--提取数据 dbms_output.put_line(emp_record.id || emp_record.name); exit when emp_cursor%notfound; end loop; close emp_cursor;--关闭游标变量 end;