Как работает CallableStatement в Oracle? - PullRequest
0 голосов
/ 17 июня 2020

Мне нужно знать, выполняет ли Oracle CallableStatement вызов БД для компиляции (или привязки) параметров IN / OUT в хранимой процедуре?

Если ответ положительный, какой запрос отправляет драйвер JDB C в БД?

1 Ответ

0 голосов
/ 23 июня 2020

Ваш вопрос непонятен, но, возможно, это поможет.

OracleConnection.prepareCall не выполняет обход базы данных.

OracleCallableStatement.setXXX не выполняет обход базы данных.

OracleCallableStatement.registerOutParameter не выполняет обхода базы данных.

Единственный метод OracleCallableStatement, который всегда выполняет обходы базы данных, - это выполнение.

OracleCallableStatement.getXXX может создать базу данных в обе стороны. В основном это зависит от типа параметра OUT. Если параметр OUT - это ARRAY, STRUCT, REF или OPAQUE, может произойти обход базы данных туда и обратно, если драйвер еще не видел описание типа для типа. Описания типов кэшируются соединением, поэтому после того, как драйвер получит описание типа, ему не нужно будет выполнять обход базы данных для создания экземпляра типа. Вызов getString или getBytes (или некоторого другого getXXX, которому требуется полное значение) для типа BLOB, CLOB, NCLOB или BFILE может потребовать обхода базы данных туда и обратно, если все значение не было получено при первоначальном вызове. Вызов getBlob, getClob, getNClob или getBfile (в зависимости от ситуации) для параметра вывода BLOB, CLOB, NCLOB или BFILE не выполняет двусторонний обход базы данных.

...