PLS-00103:在预期以下情况之一时遇到符号“TEST_PKG”:;
Posted
技术标签:
【中文标题】PLS-00103:在预期以下情况之一时遇到符号“TEST_PKG”:;【英文标题】:PLS-00103: Encountered the symbol "TEST_PKG" when expecting one of the following: ; 【发布时间】:2015-10-25 16:11:32 【问题描述】:我收到这个错误
错误:检查编译器日志 6/3 PLS-00103:遇到 预期以下之一时的符号“BEGIN”:语言
17/1 PLS-00103:遇到符号“PROCEDURE”时 期待以下之一:
end not pragma final 可实例化顺序覆盖静态成员 构造函数映射符号“static”被“PROCEDURE”替换为 继续。
27/5 PLS-00103:遇到符号“TEST_PKG”时 期待以下之一:
;.
请任何人都可以提供帮助。
SET serveroutput ON SIZE 10000;
CREATE OR REPLACE PACKAGE test_pkg
AS
FUNCTION test_item_fcn(item_name in varchar2)
RETURN BOOLEAN
AS
BEGIN
for c1 in (select * from test_item_ref where test_item_ref.item_id = item_name and rownum = 1) loop
res := true;
exit; -- only care about one record, so exit.
end loop;
return( res );
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(SUBSTR(SQLERRM, 1, 200));
END test_item_fcn;
PROCEDURE test_PROC1(p_string IN VARCHAR2)
AS
BEGIN
DBMS_OUTPUT.PUT_LINE('Output: ' || TO_CHAR(test_item_fcn(p_string)));
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(SUBSTR(SQLERRM, 1, 200));
END test_PROC1;
END test_pkg;
/
SHOW ERRORS;
【问题讨论】:
【参考方案1】:Oracle 包由两部分组成 - PACKAGE
和 PACKAGE BODY
。您应该只在PACKAGE
中定义函数/过程标头。 PACKAGE BODY
将包含实现。
所以您的代码更像PACKAGE BODY
规范 - 只需使用 CREATE OR REPLACE PACKAGE BODY test_pkg
。
但在此之前 - 创建PACKAGE
规范,如下所示:
CREATE OR REPLACE PACKAGE test_pkg
AS
FUNCTION test_item_fcn(item_name in varchar2)
RETURN BOOLEAN;
PROCEDURE test_PROC1(p_string IN VARCHAR2);
END test_pkg;
/
CREATE OR REPLACE PACKAGE BODY test_pkg
AS
FUNCTION test_item_fcn(item_name in varchar2)
RETURN BOOLEAN
AS
BEGIN
for c1 in (select * from test_item_ref where test_item_ref.item_id = item_name and rownum = 1) loop
res := true;
exit; -- only care about one record, so exit.
end loop;
return( res );
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(SUBSTR(SQLERRM, 1, 200));
END test_item_fcn;
PROCEDURE test_PROC1(p_string IN VARCHAR2)
AS
BEGIN
DBMS_OUTPUT.PUT_LINE('Output: ' || TO_CHAR(test_item_fcn(p_string)));
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(SUBSTR(SQLERRM, 1, 200));
END test_PROC1;
END test_pkg;
/
【讨论】:
以上是关于PLS-00103:在预期以下情况之一时遇到符号“TEST_PKG”:;的主要内容,如果未能解决你的问题,请参考以下文章
为啥我会收到此错误? PLS-00103:在预期以下情况之一时遇到符号“CREATE”: