线程“main”中的异常java.sql.SQLException:无效的名称模式:pakagename.sqlTypename

时间:2015-02-16 06:58:36

标签: java oracle

执行oracle函数时,我的名称模式异常无效。返回sql类型作为包下的记录。如果类型目录存在于类型目录中,则它正常工作。但是如果包目录中存在,我无法执行。请帮我解决这个问题。

create or replace PACKAGE pkg_name 

TYPE sqlTypeName 
IS 
RECORD(
firstVariable NUMBER,
secondVariable VARCHAR);

TYPE sqlTypeName_c is TABLE Of sqlTypeName INDEX BY pls_integer;

FUNCTION functionName() RETURN sqlTypeName_c 

在java代码中:

        Map typeMap = conn.getTypeMap();
        typeMap.put("sqlTypeName_c", Array.class);
        typeMap.put("sqlTypeName", Struct.class);


        CallableStatement clstmt= null;
        clstmt = conn.prepareCall("{ ? = call pkg_name.functionName() }");

        clstmt.registerOutParameter(1, Types.ARRAY, "pkg_name.sqlTypeName_c");

        clstmt.executeUpdate();

        Array returnvalue = clstmt.getArray(1);

1 个答案:

答案 0 :(得分:0)

由于在包中声明了类型,因此无效。您需要在架构中声明sqlTypeName TYPE。

以下是涉及此问题的一些问题 - Java- PLSQL- Call Table of records from java

Fetch Oracle table type from stored procedure using JDBC