PHP & amp; Oracle — сбой привязки логического значения к вызову функции оракула через php

У меня есть функция оракула, что я пытаюсь получить доступ через php:

FUNCTION internInsertData( RefId  IN NUMBER, nProjektId  IN NUMBER, nKeepMaster IN NUMBER, Position IN NUMBER,CheckPosition IN BOOLEAN, TeilanlageId IN NUMBER,  TAElementId IN NUMBER)

Эта функция нуждается в логическом параметре «CheckPosition», который, по-видимому, вызывает ошибку при привязке значения с использованием переменной к нему.

Когда я бегу

$result="";
$sql ="BEGIN :result := PRO_1.PKG_REGELELEMENT.internInsertData(28236,653,1,1,true,123,42741); END;";

$stmt = oci_parse($this->oracle->getConnection(), $sql);

oci_bind_by_name($stmt, ":result", $result,12345);
oci_execute($stmt);

все отлично работает

Я хочу передать значения путем связывания.

Но когда я связываю логическую переменную с вызовом, она не выполняется:

    $booli = true;
$result="";

$sql ="BEGIN :result := PRO_1.PKG_REGELELEMENT.internInsertData(28236,653,1,1,:booli,123,42741); END;";
$stmt = oci_parse($this->oracle->getConnection(), $sql);
oci_bind_by_name($stmt, ":result", $result,12345);
oci_bind_by_name($stmt, ":booli", $booli,12345);
oci_execute($stmt);

Это вызывает предупреждение & скрипт PL / SQL останавливается:

PLS-00306: неверный номер или типы аргументов в вызове
‘INTERNINSERTDATA’

Кажется, я не связываю логическое значение правильным способом. Привязка к другим числовым параметрам работает. Только логическое значение не имеет. Что мне не хватает?

1

Решение

Кажется, что невозможно связать логические данные, используя меньше, чем Oracle 12c, как сказал swstephe в своем комментарии.

Вам нужно будет передать значение в строке, как это:

$ sql = «BEGIN: результат: = PRO_1.PKG_REGELELEMENT.internInsertData (28236 653,1,1,
правда,123,42741); КОНЕЦ;»;

Или используйте SQLT_BOL, если вы можете использовать Oracle 12c или выше.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]