Я пытаюсь вызвать хранимую функцию в пакете, который возвращает число:
function LOGIN(USERNAME in varchar2 default null , PASSWORD in varchar2 default null) return number;
Он возвращает 0 или отрицательное целое число для отказа и положительное целое число для успеха. Вот мой PHP-код, вызывающий функцию:
$sql = ":v_res := PACK.LOGIN(:p_user, :p_pass)"; $bindings = [ ':p_user' => 'test', ':p_pass' => '1234', ':v_res' => & $result]; $statement oci_parse($connection, $sql); foreach ($bindings as $k => & $v) { oci_bind_by_name($statement, $k, $v, customSizeOf($v), determineSqlType($v)); } oci_execute($statement);
Когда я использую результат, как показано (не определено перед использованием в привязке), он возвращает предупреждение «Неопределенная переменная». Если я подавляю предупреждение и двигаюсь дальше, он связан с нулем, размером -1 и типом 1 (SQLT_CHR); Если я определяю результат как $result = -1;
, он связан с -1, размером PHP_INT_SIZE и типом 3 (SQLT_INT).
В любом случае, при выполнении, эта ошибка возникает
ORA-01036: illegal variable name/number