ORA-06550 PLS-00103 error:encountered the symbol
ORA-06550 PLS-00103 error:encountered the symbol
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:遇到符号“;”当期待以下之一时。
你能解决这个问题吗?
请使用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;
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);
我知道这听起来不够好,但是当我在同一行调用过程和参数时,我可以消除这个错误。
所以,当我像下面这样调用程序时,我得到了“ORA-06550:第 1 行,第 32 列 PLS-00103:遇到符号“;”,当我期待以下之一时。" 错误:
EXEC PR_UNITE_FILES(
PARAMETER1,
PARAMETER2
);
但是,当我像下面这样调用程序时,没有出现任何错误:
EXEC PR_UNITE_FILES( PARAMETER1, PARAMETER2 );
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:遇到符号“;”当期待以下之一时。
你能解决这个问题吗?
请使用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;
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);
我知道这听起来不够好,但是当我在同一行调用过程和参数时,我可以消除这个错误。
所以,当我像下面这样调用程序时,我得到了“ORA-06550:第 1 行,第 32 列 PLS-00103:遇到符号“;”,当我期待以下之一时。" 错误:
EXEC PR_UNITE_FILES(
PARAMETER1,
PARAMETER2
);
但是,当我像下面这样调用程序时,没有出现任何错误:
EXEC PR_UNITE_FILES( PARAMETER1, PARAMETER2 );