Я пытался связать переменную $result
для хранимой функции PL / SQL, но
это не работает, если я связываю $result
переменную как
oci_bind_by_name($stmt, ':result', $result, -1);
и выдает сообщение об ошибке как:
oci_execute (): ORA-06502: PL / SQL: ошибка с числовым значением или значением: слишком маленький буфер строки символов
Также работает для оператора if как:
oci_bind_by_name($stmt, ':result', $result, 1000);
Но хранимая функция My PL / SQL возвращает большое количество данных, поэтому я хочу использовать максимальную длину как -1.
Справочная форма:
https://www.php.net/manual/en/function.oci-bind-by-name.php
1) максимальная длина
Устанавливает максимальную длину для данных. Если вы установите его на -1, эта функция будет использовать текущую длину переменной, чтобы установить максимальную длину. В этом случае переменная должна существовать и содержать данные при вызове oci_bind_by_name ().
2) Пример # 10 Связывание для хранимой функции PL / SQL.
$sql = 'BEGIN :result := QUERY(:parameters); END;';
$stmt = oci_parse($this->oracle_db->conn_id,$sql);
oci_bind_by_name($stmt,':parameters',$parameters);
oci_bind_by_name($stmt, ':result', $result, -1);
oci_execute($stmt);
oci_free_statement($stmt);
oci_close($this->oracle_db->conn_id);
Сообщение об ошибке:
oci_execute (): ORA-06502: PL / SQL: ошибка числового значения или значения: слишком маленький буфер строки символов