Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle 如何在弹出窗口中执行和获取光标输入?_Oracle_Plsql_Oracle Sqldeveloper - Fatal编程技术网

Oracle 如何在弹出窗口中执行和获取光标输入?

Oracle 如何在弹出窗口中执行和获取光标输入?,oracle,plsql,oracle-sqldeveloper,Oracle,Plsql,Oracle Sqldeveloper,我想在oracle sql developer中创建一个cusrsor,其中根据输入弹出窗口salaryamount显示员工报告 我已经创建了游标,但我不知道如何运行这个游标,以及如何使用用户弹出窗口获取输入 declare cursor c_emp is select FIRST_NAME,SALARY,DEPARTMENT_ID from EMPLOYEES where SALARY>=10000; v_name EMPLOYEES.FIRST_NAME%type; v_sal EM

我想在oracle sql developer中创建一个
cusrsor
,其中根据输入弹出窗口
salary
amount显示员工报告

我已经创建了游标,但我不知道如何运行这个游标,以及如何使用用户弹出窗口获取输入

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;

如何执行
光标
并在弹出窗口中从用户处获取工资输入?它将显示每个员工报告。

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;
这将提示用户在运行此程序时输入
minu salary
。在OracleSQLDeveloper中,您可以像运行任何其他语句一样运行此代码—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;

plsql和oracle sqldeveloper都是相同的,我使用的是oracle sqldeveloper软件,根据google
PL/SQL是oracle公司对SQL和oracle关系数据库的过程扩展,oracle sqldeveloper是我使用的软件是。但是PL/SQLDeveloper是一个由第三方供应商Allround Automations编写的工具,用于帮助开发人员编写PL/SQL。我之所以强调这一点,是因为有关用户交互的问题在很大程度上取决于用户使用的工具。正确标记的问题会导致更及时的答案。在本例中,您要查找的标记是通用的
[plsql]
。感谢您回答@APC,但是
min\u salary
存储在哪个变量中,并告诉我如何在
oracle sql developer
软件中执行此光标???