La lecture clob ligne par ligne, avec les pl\sql

Dans mon projet j'utilise oracle comme base de données principale et j'ai été confronté à un problème avec l'analyse des clob. Supposons donc que nous avons un clob avec la valeur

   aaaaaa
   cccccc
   bbbbbb

Et il est stocké dans le test de la table ...

J'ai besoin d'écrire plsql procédure pour obtenir ce clob et le couper de sorte que je vais avoir un tableau avec les trois éléments [aaaaaa,cccccccc,bbbbbbb].

Est-il possible de trouver des solutions?

  • Qu'avez-vous essayé? Avez-vous regardé le DBMS_LOB le paquet? Si vous pouvez faire cela à un VARCHAR2 chaîne, vous pouvez adapter cette approche avec le MÉTIER de l'exploitation (e..g INSTR, SUBSTR).
  • Jetez un oeil à la documentation d'Oracle pour le package DBMS_LOB. Aller à elle, et bonne chance.
  • j'ai essayé ce code FOR i IN (SELECT * from test ) LOOP LOOP EXIT WHEN nEndIndex<1; nEndIndex := INSTR(i.value, CHR(10),nStartIndex); vLine := SUBSTR(i.incass, nStartIndex, nEndIndex); DBMS_OUTPUT.put_line(vLine); nStartIndex := nEndIndex + 1; nLineIndex:=nLineIndex+1; END LOOP; END LOOP;
  • Et... ce qui s'est passé? Ne vous obtenez une erreur? Les mauvais résultats? (Veuillez poster le code et les résultats que les modifications apportées à la question, non pas que les commentaires). Je vous suggère de travailler sur la logique avec un VARCHAR2 colonne, puis regardez la DBMS_LOB équivalents de traiter avec un CLOB à la place. Ce qui ressemble, il sera presque travailler pour VARCHAR2, si nStartIndex est initialisé à 1 et nEndIndex est 0 ou plus, mais la dernière parm de substr est mal, et il n'affiche pas la dernière ligne, je pense.
InformationsquelleAutor ilya.stmn | 2012-07-25