7
votes

Oracle SQL Developer tronque mes résultats

J'appelle une fonction stockée comme ceci: xxx pré>

Les résultats de la requête sont ensuite présentés dans une table en dessous, que je peux cliquer avec le bouton droit de la souris et sélectionnez "Données d'exportation" -> XML

<?xml version='1.0'  encoding='UTF8' ?>
<RESULTS>
  <ROW>
    <COLUMN NAME="XML_INVOICE.GENERATE_XML_DOC('84200006823')" <![CDATA[<xml>yada yada</xml><morexml>...]]></COLUMN>
  </ROW>
</RESULTS>


5 commentaires

Je supprime ma réponse depuis que vous avez confirmé que le fichier enregistré contient "...". Je ne peux pas reproduire avec un appel similaire à une fonction intégrée produisant une longue sortie. Juste pour être certain - si vous faites cela dans SQL * Plus (avec les paramètres de jeu appropriés) Avez-vous également le même résultat? De plus, à partir du nom de la fonction et de la méthode, il semble que le résultat est déjà dans XML - pourquoi avez-vous besoin de la convertir à nouveau?


Quelle est la taille du XML complet. Pouvez-vous le poster ici (afin que nous puissions insérer dans un environnement et voir si nous pouvons reproduire)


Le XML est de 70 Ko. Je ne peux pas poster le XML depuis ses données client. Dans tous les cas, le contenu réel du XML n'est pas pertinent - juste le fait que c'est tronqué.


Pouvez-vous reproduire avec un exemple plus petit et non confidentiel? Ps. Vous vous rendez compte que les données d'exportation au format XML sont là pour exporter toutes les données (dates, chiffres, chaînes, XML) dans un format XML, et non spécifiquement pour exporter des données XML?


Yup, je me rends compte que. J'ai essayé l'exportation en CSV avec le même résultat


4 Réponses :


0
votes

1) Insérez le résultat du SP dans une table

Sélectionnez xml_invoice.generate_xml_doc ('84200006823') dans Schema.Table de Dual;

(sera une seule rangée)

Utilisez EXP à exporter une table

EXP Nom d'utilisateur / Mot de passe @ Tables d'instance = (Nom de table)


1 commentaires

J'aimerais essayer cela, mais je ne sais pas comment. Je n'ai pas besoin de créer la table d'abord? Que devrait être le schéma de la table? et quelle est l'instance? Il me semble que ceci est sur la fin du serveur, que je n'ai pas accès à. N'y a-t-il pas un moyen simple d'obtenir les résultats de cette requête? Je suppose que je pourrais écrire un programme entier pour obtenir les résultats d'une requête et l'écrire. soupir mais n'est-ce pas ce que le développeur SQL est pour?



0
votes

Une autre solution serait d'écrire directement un fichier XML Voir l'exemple ci-dessous et ajuster à l'ajustement:

CREATE OR REPLACE PROCEDURE output_xml_file 
(inFileName         Varchar2 )   --user defined prefix for file name        
 AS

            fp UTL_FILE.FILE_TYPE;   
                v_filename  VARCHAR2(150);
            v_XML_Result VARCHAR2(4000);    

BEGIN

          v_filename:=infilename||'.xml';

          fp := UTL_FILE.FOPEN('c:\pathtofolder', v_filename, 'W', 4000);

          select XML_INVOICE.GENERATE_XML_DOC(inFileName) into v_XML_Result from dual; 

          UTL_FILE.PUT_LINE(fp, v_XML_Result);
          UTL_FILE.FCLOSE(fp);

          EXCEPTION

            WHEN OTHERS THEN

              UTL_FILE.FCLOSE(fp);
              raise;
    END output_xml_file;
    /
    SHOW ERRORS;
    GRANT EXECUTE ON output_xml_file TO PUBLIC;


1 commentaires

J'apprécie votre réponse. Cependant, ce code crée un fichier sur le serveur! Les DBA ne prennent pas de bonne fin à cela, et d'ailleurs, ils n'accordent pas "Mere" Developers Accès aux fichiers de lecture sur le serveur Oracle. Donc, cela ne m'aide pas beaucoup.



-2
votes

exécuté sous forme de script (F5) plutôt que comme une déclaration (Ctrl + Entrée)

La sortie passera ensuite à la fenêtre de sortie de script plutôt qu'à la sortie de la requête et vous pourrez copier et coller celui-ci


2 commentaires

Merci pour votre réponse. Je suppose que cela ne me plaisait pas avec ce problème - j'ai déménagé dans un nouvel emploi depuis que cela s'est passé et que nous n'utilisons même pas l'oracle ici, alors je n'ai donc aucun moyen de tester cela! Mais vous obtenez un uppote de moi parce que cela semble raisonnable.


Cela ne fonctionne pas. J'ai le même problème pour Sélectionnez le texte à partir de All_Views où voir view_name = 'xxx' pour une vue complexe, je dois inverser ingénieur. La sortie avec F5 est tronquée encore pire.



11
votes

J'avais le même problème dans SQL Developer 4. Voici ce qui a fonctionné pour moi: xxx

puis réexécuter la requête. Vous devriez maintenant pouvoir voir la cellule complète dans la vue de la grille et l'exporter à CSV également.

(l'OP n'est plus avec le même travail ou en utilisant Oracle, mais cette question est l'une des premiers résultats dans Google, j'espère donc que cela aidera les personnes à avoir le même problème.)


0 commentaires