Вызов функции PLSQL в Java, которая возвращает Boolean [duplicate]

другим способом является добавление пустого абзаца с четким как после последнего плавающего div.

<p style="clear:both"></p>
2
задан Prashant 18 June 2013 в 07:53
поделиться

2 ответа

Из-за ограничения уровня OCI драйверы JDBC не поддерживают передачу параметров BOOLEAN в хранимые процедуры PL / SQL. Логический тип java не совпадает с логическим типом PL / SQl. Документация Oracle указывает, что BOOLEAN является только PL / SQL-типом, и нет никакого сопоставления между классом «java.lang.Boolean» и типом данных PL / SQL BOOLEAN.

So Я боюсь, вам, возможно, придется изменить функцию PL / SQL базы данных, чтобы вернуть целое число вместо

или

, просто создайте обертку: function isValidPeriodInt(<params>) return integer is begin <call isValidPeriod and return 1 on true, 0 on false> end;

4
ответ дан Juned Ahsan 19 August 2018 в 14:38
поделиться
  • 1
    Если функция используется в другом месте, и вы не можете ее изменить, просто создайте оболочку: function isValidPeriodInt(<params>) return integer is begin <call isValidPeriod and return 1 on true, 0 on false> end; – Klas Lindbäck 18 June 2013 в 08:12
  • 2
    +1 @ KlasLindbäck Позвольте мне добавить его к ответу – Juned Ahsan 18 June 2013 в 08:13

Существует простое обходное решение для этого ограничения, которое не требует функции обертки, просто обертывание самой логической функции в инструкции CASE и использование Integer для привязки:

stmt = conn.prepareCall(
          "BEGIN"
        + " ? := CASE WHEN (myBooleanFuncInOracle()) "
        + "       THEN 1 "
        + "       ELSE 0"
        + "      END;"
        + "END;");

stmt.registerOutParameter(1, Types.INTEGER);

// exec
stmt.execute();

// get boolean from Integer
boolean myBool = (stmt.getInt(1) == 1);

Very полезно, если вы не можете или не хотите изменять свою функцию или даже не можете создать функцию-оболочку, то есть в старых DB.

4
ответ дан GWu 19 August 2018 в 14:38
поделиться
  • 1
    Я думаю, что это лучшее решение, потому что вам не нужно изменять базу данных. – miracle173 2 May 2016 в 15:03
Другие вопросы по тегам:

Похожие вопросы: