ORACLE PL/SQL 在查询 3 列信息时出现存储过程错误

Posted

技术标签:

【中文标题】ORACLE PL/SQL 在查询 3 列信息时出现存储过程错误【英文标题】:ORACLE PL/SQL Error with Stored Procedure while consulting information from 3 columns 【发布时间】: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

【问题讨论】:

【参考方案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;

祝你好运

【讨论】:

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

Oracle PL/SQL:在 SAMPLE 子句中使用变量时出现语法错误

运行时解析 PL/SQL 的 Oracle Apex Cards 视图

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

plsql怎么看查询的数据总数

为啥在 PL/SQL Oracle 中尝试创建 INSTEAD OF 触发器时出现“错误的绑定变量”错误?

我用PL/SQL-Developer登录oracle时出现 ORA-12560:TNS:协议适配器错误怎么办?急!!!!!