我收到此错误
Errors: check compiler log 6/3 PLS-00103: Encountered the symbol "BEGIN" when expecting one of the following:language
17/1 PLS-00103: Encountered the symbol "PROCEDURE" when expecting one of the following:
end not pragma final instantiable order overriding static member constructor map The symbol "static" was substituted for "PROCEDURE" to continue.
27/5 PLS-00103: Encountered the symbol "TEST_PKG" when expecting one of the following:
;.
请任何人都可以帮忙。
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;
最佳答案
Oracle 包由 2 部分组成 - PACKAGE
和 PACKAGE BODY
。您应该在 PACKAGE
中仅定义函数/过程 header 。 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;
/
关于java - PLS-00103 : Encountered the symbol "TEST_PKG" when expecting one of the following: ;,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33331871/