1. 程式人生 > >oracle帶引數的遊標

oracle帶引數的遊標

Oracle中的遊標可以帶引數麼?具體怎麼實現呢?

可以啊,引數在遊標定義時使用,開啟時傳入引數,例如:
create or replace procedure a
as
  cursor b(c_id int)is select * from d where id=c_id;
  begin
    open b(111);
  end;

參遊標是指帶有引數的遊標。在定義了引數遊標之後,當使用不同引數值多次開啟遊標時,可以生成不同的結果集。定義引數遊標的語法如下:

CURSOR cursor_name(parameter_name datetype) IS select_statement;

注意,當定義引數遊標時,遊標引數只能指定資料型別,而不能指定長度。當定義引數遊標時,一定要在遊標子查詢的where子句中引用該引數,否則就失去了定義引數遊標的意義。

declare
cursor emp_cursor(no number) is
select ename from emp where deptno=no;
v_ename emp.ename%type;
begin
open emp_cursor(10);
loop
fetch emp_cursor into v_ename;
exit when emp_cursor%notfound;
dbms_output.put_line(
'僱員名: '||v_ename); end loop; end;