0
create or replace PROCEDURE empl_info(ename VARCHAR2,empid OUT 
NUMBER,empcount OUT NUMBER,empname OUT VARCHAR2)
IS
BEGIN
SELECT COUNT(emp_name) INTO empcount FROM employees WHERE emp_name=ename;
SELECT emp_name, emp_id INTO empname,empid FROM employees WHERE 
emp_name=ename;
END;


DECLARE en INT,ei INTEGER,ec INT;
EXECUTE empl_info('balu',ei OUTPUT,ec OUTPUT,en OUT);
 SELECT en,ec;

错误:ORA-06550:第 1 行,第 15 列 PLS-00103:遇到符号“;” 当期待以下之一时。

你能解决这个问题吗?

4

3 回答 3

0

请使用正确的语法ANONYMOUS BLOCK

DECLARE 
    en NUMBER;
    ei NUMBER;
    ec NUMBER;
BEGIN
    empl_info('balu',ei,ec,en);
    DBMS_OUTPUT.PUT_LINE('EN :'||en);
    DBMS_OUTPUT.PUT_LINE('EC :'||ec);
END;
于 2017-10-31T13:17:56.613 回答
0
SQL> CREATE or REPLACE PROCEDURE empl_info(ename VARCHAR2,empid OUT NUMBER,empcount OUT NUMBER,empname OUT VARCHAR2) IS
BEGIN
  SELECT COUNT(emp_name) INTO empcount FROM employees WHERE emp_name=ename;
  SELECT emp_name, emp_id INTO empname,empid FROM employees WHERE emp_name=ename;
  dbms_output.put_line(' employee name : '||empname||'  |  employee count : '||empcount);
END;

只需调用没有 OUT 或 OUTPUT 的变量

SQL> set serveroutput on;
SQL> var ei number;
SQL> var ec number;
SQL> var en varchar2(100);
SQL> exec empl_info('balu',:ei,:ec,:en);
于 2017-10-31T13:18:32.180 回答
0

我知道这听起来不合适,但是当我在同一行上调用过程和参数时,我可以摆脱这个错误。

因此,当我调用下面的过程时,我得到“ ORA-06550:line 1,column 32 PLS-00103:encountered the symbol ";" when expecting the one. " 错误:

EXEC PR_UNITE_FILES( 

PARAMETER1,

PARAMETER2

);

但是,当我调用下面的过程时,我没有收到任何错误:

EXEC PR_UNITE_FILES(  PARAMETER1, PARAMETER2 );
于 2021-09-27T10:02:31.567 回答