J'utilise le paquet Laravel-OCI8 pour communiquer avec la base de données Oracle depuis Laravel. J'appelle une fonction d'Oracle qui renvoie le résultat sous forme de CLOB. Voici le code Laravel :
$stmt = $this->pdo_obj->prepare("begin :result := test_pkg.get_data(:param1,:param2,:param3); end;");
$stmt->bindParam(':result', $result, \PDO::PARAM_STR);
$stmt->bindParam(':param1', $param1, \PDO::PARAM_STR);
$stmt->bindParam(':param2', $param2, \PDO::PARAM_STR);
$stmt->bindParam(':param3', $param3, \PDO::PARAM_STR);
$stmt->execute();
return response($result);
Mais je reçois une erreur : ORA-06502 : PL/SQL : erreur numérique ou de valeur : tampon de chaîne de caractères trop petit
J'ai aussi essayé de suivre :
$response = $this->oracle_obj->select("select test_pkg.get_data('$param1','$param2','$param3') as refc from dual");
Mais il n'est pas possible d'utiliser l'appel ci-dessus dans mon cas car il y a des opérations DML dans ma fonction. Existe-t-il une autre méthode pour appeler la fonction d'oracle dans Laravel en utilisant OCI8 ?