我创建了一个存储过程,以便从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
您的过程需要三个参数,但您只传递一个参数。您传递的所有三个参数都应该是变量,而不是常量,因为它们是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;
祝你好运