gpt4 book ai didi

java.sql.SQLException : ORA-06550: after calling procedure from java code 异常

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:13:11 26 4
gpt4 key购买 nike

您好,我在调用存储过程时遇到问题。当我试图从我的以下 Java 代码中调用我的过程时

connection = ConnectionManager.getInstance().getConnection(dataBaseURL, serverName, portNumber, sid, username, password);

callable = connection.prepareCall("{call SCHEMA_RESTORE.restore()}");

callable.executeUpdate();
..................................

我遇到了这个异常

Exception in thread "main" java.sql.SQLException: ORA-06550: line 1, column 7:

PLS-00201: identifier 'SCHEMA_RESTORE.RESTORE' must be declared
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored

at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:289)
at oracle.jdbc.ttc7.Oall7.receive(Oall7.java:573)
at oracle.jdbc.ttc7.TTC7Protocol.doOall7(TTC7Protocol.java:1891)
at oracle.jdbc.ttc7.TTC7Protocol.parseExecuteFetch(TTC7Protocol.java:1093)
at oracle.jdbc.driver.OracleStatement.executeNonQuery(OracleStatement.java:2047)
at oracle.jdbc.driver.OracleStatement.doExecuteOther(OracleStatement.java:1940)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:2709)
at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:589)
at oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStatement.java:656)

我的程序是

CREATE OR REPLACE PACKAGE BODY SCHEMA_RESTORE IS 
PROCEDURE backup (pbRecreateBackupTable IN BOOLEAN DEFAULT FALSE)
IS
TableAlreadyExists EXCEPTION;
PRAGMA EXCEPTION_INIT (TableAlreadyExists, -955);
nCount NUMBER;
CURSOR cTables IS SELECT tbls.table_name tbl, SUBSTR(tbls.table_name,4) name FROM user_tables tbls, FT_T_TBDF tbdf
WHERE tbls.table_name NOT LIKE gsPrefix || '%' AND tbls.table_name NOT LIKE 'FT_CFG%' AND tbls.table_name NOT IN ('FT_WF_APEV','FT_WF_WFTJ','FT_WF_WFTN','FT_WF_WFNP','FT_WF_WFNV','FT_WF_WFIO','FT_WF_WFGV','FT_WF_WFND','FT_WF_WFDF','EXCEPTIONS','TESTDSFP') and tbls.table_name NOT LIKE 'FT_LOG%'
AND tbdf.tbl_id(+) = SUBSTR(tbls.table_name,-4) AND tbdf.tbl_desc NOT LIKE '%Note: This table is obsolete%';
BEGIN

RAISE;
END;
END LOOP;
EXCEPTION
WHEN OTHERS THEN
RAISE;
END backup;

最佳答案

错误消息指出无法找到 SCHEMA_RESTORE.RESTORE。有几种可能的原因:

  • 包(和过程)在不同的模式中,例如你以用户 A 的身份编译它,但试图以用户 B 的身份调用它们。
  • 您无权执行程序包中的过程。因此它变得不可见。
  • 您已在包体中定义过程,但尚未在包头中声明它。

我能看到的另一个问题是括号。如果调用不带参数的过程,则应省略括号:

{ call SCHEMA_RESTORE.restore }

关于java.sql.SQLException : ORA-06550: after calling procedure from java code 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13814864/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com