Comment retourner temporaire CLOB exemple de fonction stockées en Pl/SQL?

Ma fonction stockée crée temporaire LOB instance à l'aide de: Dbms_Lob.CreateTemporary(BUFFER, TRUE, Dbms_Lob.SESSION);BUFFER est un local CLOB variable. Après que la fonction remplit BUFFER avec certains de données et le renvoie.

Paramètre de durée de Dbms_Lob.CreateTemporary dans mon cas, c'est Dbms_Lob.SESSION, mais selon documentation oracle:

Le paramètre de durée passé à dbms_lob.createtemporary() est un indice.
La durée de la nouvelle temp LOB est la même que la durée de la
localisateur de variable en PL/SQL. Par exemple, dans le programme précédent
bloc, le programme de la variable a, la durée de la résidence image.
Donc à la fin du bloc, de la mémoire sera libérée à la
fin de la fonction.

Donc BUFFER CLOB peut être détruite par Oracle après avoir quitté le bloc de fonction. Je peux voir que, dans certains cas, lorsque la mémoire TAMPON est de plus de 32 KO, je ne peux pas le lire c'est la valeur de retour de cette façon, à partir de Java (JDBC).

Est-il un autre chemin pour le retour temporaire CLOB instance à partir d'une fonction?

Pouvez-vous vous convertir à une procédure et à l'utilisation d'un paramètre de SORTIE de type clob?
Oblak, en fait non, parce que je dois utiliser cette fonction dans l'instruction SELECT.
Alors peut-être vous pouvez déclarer une variable de niveau package et de retour de la fonction.
pourquoi ne pouvez-vous pas juste de retour d'un clob?
Avez-vous seulement, et de manière cohérente, un problème lorsque le CLOB est plus de 32K? Si cela sonne comme une JDBC problème, ou un problème avec la façon dont vous êtes à la récupération de la valeur sur le Java fin. Peut-être l'ajout de votre code Java peut révéler quelque chose?

OriginalL'auteur Volodymyr Frolov | 2013-01-29