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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在咨询3列信息时,ORACLE PL / SQL错误与存储过程有关相关的知识,希望对你有一定的参考价值。

我创建了一个存储过程,以便从3列中检索一些信息。我可以编译它没有错误,但当我做EXEC我得到一个错误:

PL/SQL: Statement ignored
06550. 00000 -  "line %s, column %s:
%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
答案

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

祝你好运

以上是关于在咨询3列信息时,ORACLE PL / SQL错误与存储过程有关的主要内容,如果未能解决你的问题,请参考以下文章

pl/sql developer 提示信息乱码

Oracle SQL 或 PL/SQL:如何仅在上升趋势或下降趋势结束时识别烛台形态并在列中设置标志?

Oracle_SQL 基本查询

oracle forms builder pl/sql - 访问从其他列派生的列

在 Oracle PL/SQL 中,当列的其余值相等时,我可以交换表中两个不同行的同一列的值吗?

oracle 用户名中带下划线,pl/sql登陆不了