【问题标题】:ORACLE PL/SQL Error with Stored Procedure while consulting information from 3 columnsORACLE PL/SQL 在查询 3 列信息时出现存储过程错误
【发布时间】:2018-10-26 00:46:41
【问题描述】:

我创建了一个存储过程,以便从 3 列中检索一些信息。我可以毫无错误地编译它,但是当我执行EXEC 时出现错误:

PL/SQL: Statement ignored
06550. 00000 -  "line %s, column %s:\n%s"

这是 PL/SQL:

CREATE OR REPLACE PROCEDURE consult_employee(
e_id IN OUT EMPLOYEES.EMPLOYEE_ID%TYPE,
e_nom   OUT EMPLOYEES.FIRST_NAME%TYPE,
e_job   OUT EMPLOYEES.JOB_ID%TYPE
) IS
BEGIN
-- Consult the employee
SELECT employee_id, first_name, job_id
INTO e_id, e_nom, e_job
FROM employees
WHERE employee_id = e_id;
DBMS_OUTPUT.PUT_LINE('Your consult is: ' || e_id || e_nom || e_job);
END;

当我执行下一个时,我得到了错误:

EXEC consult_employee(102);

这就是我桌子上的东西:

EMPLOYEE_ID | FIRST_NAME | JOB_ID
____________|____________|________
    102     |    Lex     | AD_VP

【问题讨论】:

    标签: oracle plsql oracle-sqldeveloper plsqldeveloper


    【解决方案1】:

    您的过程需要三个参数,但您只传递了一个。而且您传递的所有三个参数都应该是变量,而不是常量,因为它们要么是 IN OUT 要么是 OUT 参数。

    所以你应该这样做:

    DECLARE
      nEmp_id        NUMBER := 102;
      strFirst_name  VARCHAR2(100);
      nJob_id        NUMBER;
    BEGIN
      CONSULT_EMPLOYEE(nEmp_id, strFirst_name, nJob_id);
    
      DBMS_OUTPUT.PUT_LINE('EMP_ID=' || nEmp_id ||
                           '  FIRST_NAME=''' || strFirst_name || '''' ||
                           '  JOB_ID=' || nJob_id);
    END;
    

    祝你好运

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-22
      • 2017-12-21
      • 1970-01-01
      相关资源
      最近更新 更多