在咨询3列信息时,ORACLE PL / SQL错误与存储过程有关

问题描述 投票:0回答:1

我创建了一个存储过程,以便从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个回答
2
投票

您的过程需要三个参数,但您只传递一个参数。您传递的所有三个参数都应该是变量,而不是常量,因为它们是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;

祝你好运

© www.soinside.com 2019 - 2024. All rights reserved.