我想在oracle sql开发人员中创建一个cusrsor
,在其中根据输入弹出窗口salary
的数量显示员工报告。
我已经创建了游标,但是我不知道如何运行此游标以及如何使用用户弹出窗口获取输入?
declare
cursor c_emp is
select FIRST_NAME,SALARY,DEPARTMENT_ID from EMPLOYEES where
SALARY>=10000;
v_name EMPLOYEES.FIRST_NAME%type;
v_sal EMPLOYEES.SALARY%type;
v_deptno EMPLOYEES.DEPARTMENT_ID%type;
begin
open c_emp;
loop
fetch c_emp into v_name, v_sal, v_deptno;
exit when c_emp%NOTFOUND;
dbms_output.put_line(v_name||' '||v_sal||' '||v_deptno);
end loop;
close c_emp;
end;
如何执行cursor
并在弹出窗口中获取用户的薪水输入?它将显示每个员工的报告。
答案 0 :(得分:1)
SQL Developer支持许多(但不是全部)古老的SQL * Plus命令集。受支持的集合包括&
语法,用于标识替换变量。替换变量是一个占位符,当用户运行代码时会提示用户输入。
因此,您需要做的是编辑代码以使用此代码:
declare
cursor c_emp is
select FIRST_NAME,SALARY,DEPARTMENT_ID
from EMPLOYEES
where SALARY >= &min_salary; -- substitution variable
v_name EMPLOYEES.FIRST_NAME%type;
v_sal EMPLOYEES.SALARY%type;
v_deptno EMPLOYEES.DEPARTMENT_ID%type;
begin
open c_emp;
loop
fetch c_emp into v_name, v_sal, v_deptno;
exit when c_emp%NOTFOUND;
dbms_output.put_line(v_name||' '||v_sal||' '||v_deptno);
end loop;
close c_emp;
end;
这将提示用户在运行此程序时输入min_salary
。在Oracle SQL Developer中,您可以像运行其他任何 ctrl + enter 语句或单击菜单栏上的绿色箭头一样运行此代码。
替换变量是占位符:它们没有存储在可寻址空间中。如果出于任何原因要这样做,则需要显式定义变量并将替代变量分配给它:
l_min_salary number := &min_salary;
然后,您需要更改其余代码以使用该变量。也许像这样:
declare
cursor c_emp (p_min_sal number) is
select FIRST_NAME,SALARY,DEPARTMENT_ID
from EMPLOYEES
where SALARY >= p_min_sal;
l_min_salary number := &min_salary;-- substitution variable
v_name EMPLOYEES.FIRST_NAME%type;
v_sal EMPLOYEES.SALARY%type;
v_deptno EMPLOYEES.DEPARTMENT_ID%type;
begin
open c_emp (l_min_salary);
loop
fetch c_emp into v_name, v_sal, v_deptno;
exit when c_emp%NOTFOUND;
dbms_output.put_line(v_name||' '||v_sal||' '||v_deptno);
end loop;
close c_emp;
end;