当前位置: 首页 > 知识库问答 >
问题:

01422.00000-“精确提取返回的行数超过了请求的行数”

公良理
2023-03-14
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;

共有1个答案

韦衡
2023-03-14

您可以使用光标来处理:

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.指出的那样,你表明工资<9000也是正常的--这很可能是一个错别字。

 类似资料: