java - PLS-00103 : Encountered the symbol "TEST_PKG" when expecting one of the following: ;

标签 java plsql plsqldeveloper

我收到此错误

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 部分组成 - PACKAGEPACKAGE 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/

相关文章:

java - 如何使用 queryForObject 和 rowMapper 从表中获取一行或多行?

java - 类型不匹配 : cannot convert from element type object

oracle - Oracle 中的触发器可以传递参数吗?

java - 如果在 JFrame 中选中 JCheckedBox,如何获取值

java - 未找到 libGDX ApplicationListener

java - SQL - 在 DAO 中执行时列名无效

sql - Oracle PL/SQL : Function Error when passing parameters

plsql - PLS-00653 空行错误(PL/SQL 范围内不允许聚合/表函数)

oracle - PL/SQL 包类型与模式类型