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;
您可以使用光标来处理:
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也是正常的--这很可能是一个错别字。
Select语句在Resault中返回多行。是否可以用此函数获得resault中的所有行? ORA-01422:精确提取返回的行数多于请求的行数
ORA-06512:在“sys.dbms_sql”处,第1721行 我确信这个函数的结果只有一行,我不想使用。
在第1行声明 * 错误: ORA-01422:精确提取返回的行数超过请求的行数 ORA-06512:在第11行 这是我的代码。
剧本: 新的SQL和PL/SQL,所以我将感谢任何帮助。
我很难理解PL/SQL触发器的问题所在。错误为:错误报告-SQL错误:ORA-01422:精确提取返回的行数超过请求的行数ORA-06512:在“System.trg_late_return”处,第6行ORA-04088:触发器“System.trg_late_return”执行过程中的错误01422。00000-“精确提取返回的行数超过请求的行数”*原因:精确提取中指定的行数小于返回的行数。*操