Oracle
 sql >> Base de données >  >> RDS >> Oracle

Comment renvoyer une instance CLOB temporaire à partir d'une fonction stockée dans Pl/SQL ?

Dans un commentaire, vous avez dit :

La documentation de getSubString déclare que :

Avec une fonction simple pour générer et renvoyer un CLOB, je peux le récupérer via JDBC (ojdbc5 ou ojdbc6 ) sans problème, soit avec getCLOB() ou getString() . Mais si j'essaie d'attribuer le Oracle.sql.CLOB récupéré avec getCLOB à une String en utilisant

String x = getSubString(0, clob.length());

puis j'obtiens également le Invalid argument(s) in call Erreur. Changez simplement cela en :

String x = getSubString(1, clob.length());

œuvres. Cela semble donc n'avoir rien à voir avec l'allocation temporaire dans la fonction ou la taille CLOB. Je ne comprends pas pourquoi vous n'avez pas eu de problème avec les petits CLOB - peut-être que votre logique n'a tout simplement pas atteint cela s'ils étaient petits ?

En attendant, vous avez contourné ce problème avec clob.getCharacterStream().read() , donc cela peut être un peu hors de propos maintenant.