【问题标题】:01422. 00000 - "exact fetch returns more than requested number of rows"01422. 00000 - “精确提取返回的行数超过了请求的行数”
【发布时间】:2017-10-04 08:04:11
【问题描述】:
DECLARE 
    EMPLEADO EMPLOYEES.EMPLOYEE_ID%TYPE;
    SALARIO EMPLOYEES.SALARY%TYPE;
BEGIN
    select employee_id , salary INTO EMPLEADO , SALARIO
    FROM EMPLOYEES
    WHERE EMPLOYEE_ID > = '100' AND EMPLOYEE_ID < = '120';
    IF SALARIO > 100000 THEN
    DBMS_OUTPUT.PUT_LINE('El salario actual del empleado '||empleado||' es de '||salario||'.'|| 'Es un excelente salario');
    elsif SALARIO > 9000 AND SALARIO < 100000 THEN
    DBMS_OUTPUT.PUT_LINE('El salario actual del empleado '||empleado||' es de '||salario||'.'|| 'Es un salario normal');
    ELSIF SALARIO < 9000 THEN
    DBMS_OUTPUT.PUT_LINE('El salario actual del empleado '||empleado||' es de '||salario||'.'|| 'Es un salario normal');
    end if;
end;

【问题讨论】:

  • 什么令人困惑?您的查询返回多行,并且通过将值放入变量中,您假设只有一行。
  • 怎样才是正确的做法?
  • 你想做什么?获取所有员工的名单?您不需要变量或 INTO,只需要 SELECT 的结果。
  • 员工的工资是优秀的、正常的还是需要加薪的,根据你的工资来划分

标签: sql oracle


【解决方案1】:

你可以用光标来处理:

SET SERVEROUTPUT ON

DECLARE
  CURSOR CURSOR1 IS
    SELECT EMPLOYEE_ID, SALARY
      FROM EMPLOYEES
     WHERE EMPLOYEE_ID >= '100' AND EMPLOYEE_ID <= '120';          
EMPLEADO EMPLOYEES.EMPLOYEE_ID%TYPE;
SALARIO EMPLOYEES.SALARY%TYPE;
BEGIN
  FOR REC IN CURSOR1 LOOP
    EMPLEADO := REC.EMPLOYEE_ID;
    SALARIO := REC.SALARY;
    IF SALARIO > 100000 THEN
       DBMS_OUTPUT.PUT_LINE('El salario actual del empleado '||empleado||' es de '||salario||'.'|| 'Es un excelente salario');
    ELSIF SALARIO > 9000 AND SALARIO < 100000 THEN
       DBMS_OUTPUT.PUT_LINE('El salario actual del empleado '||empleado||' es de '||salario||'.'|| 'Es un salario normal');
    ELSIF SALARIO < 9000 THEN
       DBMS_OUTPUT.PUT_LINE('El salario actual del empleado '||empleado||' es de '||salario||'.'|| 'Es un salario normal');
    END IF;
    EMPLEADO := NULL;
    SALARIO := NULL;
  END LOOP;
END;

正如 Nicholas V. 指出的那样,您表示工资

【讨论】:

    猜你喜欢
    • 2020-11-02
    • 1970-01-01
    • 1970-01-01
    • 2013-11-15
    • 2021-06-14
    • 2019-01-27
    • 2015-09-24
    • 1970-01-01
    相关资源
    最近更新 更多