Исключение в потоке «основной» java.sql.SQLException: неверный шаблон имени: pakagename.sqlTypename

1

При выполнении функции 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);
  • 0
    Попробуйте добавить имя схемы перед вашим пакетом, например schema.pkg_name.sqlTypeName_c
  • 0
    в соответствии с этой страницей это будет решено, если вы закроете ВСЕ названия вашего типа
Теги:

1 ответ

0

Это не будет работать, поскольку тип объявлен в пакете. Вам нужно будет объявить тип sqlTypeName TYPE внутри схемы.

Вот некоторые из вопросов, которые касаются этой проблемы - Java- PLSQL-Call Table записей из java

Извлечение типа таблицы Oracle из хранимой процедуры с использованием JDBC

Ещё вопросы

Сообщество Overcoder
Наверх
Меню