У меня есть приложение, разработанное с помощью фреймворка Laravel php. И я использую следующий пакет для работы с моей базой данных Oracle.
https://github.com/yajra/laravel-oci8
У меня есть следующая функция в Oracle:
function my_func(uid in number, json in out nocopy clob) return number is
И в php я называю это
$result = '';
$pdo = DB::connection('oracle')->getPdo();
$stmt = $pdo->prepare("begin :result := my_func(:uid, :json); end;");
$stmt->bindParam(':result', $result, \PDO::PARAM_INT);
$stmt->bindParam(':uid', $uid, \PDO::PARAM_INT);
$stmt->bindParam(':json', $json, \PDO::PARAM_STR, 1000000);
$stmt->execute();
return response()->json(json_decode($json), ($result === 1) ? 200 :
400);
Когда вывод 'json' меньше 32767 символов, тогда код работает. Но когда оно больше, возникает следующее исключение:
Oci8Exception {#615
#message: """
Error Code : 6502\n
Error Message : ORA-06502: PL/SQL: erro numérico ou de valor\n
Сведения о системе
Oracle 11g
Ubuntu 18.04
PHP 7,2
Laravel 5.5
Laravel-OCI8 5.5