J'ai une instruction select qui retourne 0 ou plusieurs lignes. J'essaye de trouver un proc de plsql avec un curseur pour produire la production de xml pour, toutes les rangées retournées dans 100 rangées à la fois. Je fais ceci pour morceler des rangées de loo à la fois basé sur l'exigence.Oracle plsql segmentant les lignes
Donc, fondamentalement, mon programme devrait suivre la logique ci-dessous
cursor c1 is select id,code_id,code_desc from table order by id; --returns some rows
if c1%notfound
then return;` -- exit from procedure
else
loop
grab first 100 rows from select and append to a variable
and assign it to a variable;
update this variable into a clob field in a table.
grab next 100 rows and append into a variable
update this variable into a clob field in a table in another row;see below
table data
and so on
and grab remaining rows and append into a variable
print the variable;
until no data found;
exit
Je suis en train de faire convertir la sortie de l'instruction select en texte XML.
La sortie devrait ressembler à quelque chose comme ci-dessous:
TABLE: STG_XML_DATA
LOOP_NO(NUMBER), XML_TEXT(CLOB), ROWS_PROCESSED
1 <XML><id>1</ID><id>2</ID>..<ID>100</ID></XML> 100
2 <XML><id>101</ID><id>102</ID>..<ID>200</ID></XML> 200
3 <XML><id>301</ID><id>102</ID>..<ID>320</ID></XML> 20
Quelqu'un peut-il aider s'il vous plaît
Pourquoi vous essayez de traiter seulement 100 lignes à la fois? Et pourriez-vous préciser à quoi ressemblent vos lignes, ou à quoi ressemble "ajouter à une variable"? Vous pouvez par exemple stocker des lignes dans des collections PL/SQL, mais cela ne les rend pas vraiment plus faciles à imprimer. – kfinity
J'essaye juste de découper les rangées 100 à la fois et d'ajouter cela dans la variable qui peut être stockée dans une table pas nécessairement imprimée. Je travaille sur la génération de texte xml qui suit un modèle. les valeurs renvoyées à partir de cette instruction select seront utilisées pour ajouter cela dans une colonne clob. – user1751356
Avoir une lecture ici pour quelques informations très utiles sur le travail avec les curseurs, en particulier la limitation des lignes récupérées que vous voulez faire et comment savoir correctement quand vous avez atteint la fin (pas en utilisant NOTFOUND!): Http: // www. oracle.com/technetwork/issue-archive/2008/08-mar/o28plsql-095155.html –