Есть такой вопрос. У меня в базе есть пакет с функцией, который возвращает CLOB. И мне нужно зарегистрировать в java clob для возвращаемого значения. Делаю по логике я все правильно. Подскажите как можно просмотреть зарегистрировался ли CLOB?
QueryWithResultAsClob = "{ ? = call FindPackage.findkartoteka('child.municid in(''{BA986261-AC49-4F7B-AC0D-8B4A6AFD9364}'',''{FE00E848-55B3-4E7F-8E15-8DB24F132A45}'')',0,1,2,1)}"
cp30NativeJdbcExtractor = new C3P0NativeJdbcExtractor();
connection = (OracleConnection) cp30NativeJdbcExtractor.getNativeConnection(Session.connection());
OracleCall = (OracleCallableStatement) connection.prepareCall(QueryWithResultAsClob);
OracleCall.registerOutParameter(1, Types.CLOB);
Вот параметры функции:
function FINDKARTOTEKA
(
MunObr IN CLOB,
KindFindKartoteka in INT,
AllOrAny in number,
ShowArchive in int,
UserFindLogin in varchar2
)return CLOB
Так же я залез дальше по исходному коду и в конструкции switch case нет case для размера CLOB типа. Может ли в этом быть проблема так же?
Не обращайте внимание на именование переменных. Досталось от прошлого разработчика, пока пытаюсь запустить его код. Заранее спасибо за помощь.
Если исключение не выбрасывается, то параметр зарегистрирован.
По идее в vanilla JDBC возвращаемый параметр не может иметь тип Types.CLOB
и вы должны получить SQLFeatureNotSupportedException
:
Throws: SQLFeatureNotSupportedException - if sqlType is a ARRAY, BLOB, CLOB, DATALINK, JAVA_OBJECT, NCHAR, NCLOB, NVARCHAR, LONGNVARCHAR, REF, ROWID, SQLXML or STRUCT data type and the JDBC driver does not support this data type
Но поскольку вы используете Oracle расширение JDBC то видимо это у вас поддерживается. В любом случае, рекомендовал бы почитать доки вашего JDBC драйвера, особливо в месте про Ораклевские extension
Виртуальный выделенный сервер (VDS) становится отличным выбором
Добрый день, разрабатываю систему отчетности в виде web-приложенияИспользую Spring и Hibernate
Посредством чего или с помощью чего взаимодействует один микросервис с другим?