Partage
  • Partager sur Facebook
  • Partager sur Twitter

Probleme de colone de type "LONG"

Comment classer une colone de type "LONG"

    23 novembre 2011 à 13:18:12

    Bonjour à toutes et à tous.

    Je vous expose mon problème :

    Je suis en stage dans un hôpital.
    Je travail actuellement sur une base de données liée à QSP System qui est un logiciel d'administration des patients de cet établissement.
    J'ai une table nommée "PRA_RDV_R" qui correspond à la table des rendez-vous.

    J'ai pour but de trouver tous les patients reliés à certains motifs de rendez-vous.
    Il y a donc une colonne "nom_pat" (nom des patients) et une colonne "MOTIF" (motif du rendez-vous).
    (Je ne vous donne que deux colonne pour simplifier les choses. Cette table comporte 19 colonnes).

    Hors, la colonne "MOTIF" est de type LONG.

    J'ai testé cette requête à fin de tester si tout fonctionnait bien :
    SELECT nom_pat, motif 
    FROM pra_rdv_r
    ORDER BY motif;
    


    Je reçois l'erreur suivante :
    ORA-00997 illegal use of LONG datatype
    


    Après quelques recherches, j'ai appris que les chaines de caractères de type LONG ne pouvaient être placées ni dans le WHERE ni dans un ORDER BY, GROUP BY, DISTINCT, CONNECT BY...

    J'ai aussi lu que l'on pouvait, au moment de l'affichage de la requête, modifier le type de chaine de caractères. C'est-à-dire passer d'un type LONG à un type VARCHAR par exemple.

    Je travail sous ORACLE et je n'ai pas réussi à comprendre, ni trouver de solution afin de trier par "MOTIF" ma table "PRA_RDV_R". Sachant qu'il y a environ 50 000 patients enregistrés dans cette dite table.

    Un peu d'aide ne serai pas de refus. Bien entendu, la solution toute prête ne m’intéresse pas. Une piste ou une solution approximative accompagnée de commentaires et d'explications ou encore un lien vers un site (français de préférences...) seraient les bienvenus.

    Cordialement, Xerkes.
    • Partager sur Facebook
    • Partager sur Twitter
      23 novembre 2011 à 13:28:11

      Regarde du côté des fonctions de cast ou convert
      • Partager sur Facebook
      • Partager sur Twitter
      Ca ne marche pas, ça ne veut rien dire ! Qu'est ce qui ne marche pas ?
        23 novembre 2011 à 16:14:25

        Les fonctions Cast et Convert ne fonctionnent pas sur une chaine de caractères de type LONG.

        Voici ma requête :

        SELECT n_unique, c_prat, d_rdv, npatient, CAST(motif, varchar(50)) AS motif
        FROM pra_rdv_r
        ORDER BY motif;
        


        Le SGBDDR n'accepte pas. La syntaxe est bonne. J'en ai testé une cinquantaine...

        SELECT n_unique, c_prat, d_rdv, npatient, CAST(motif, int(50)) AS motif
        FROM pra_rdv_r
        ORDER BY motif;
        
        SELECT n_unique, c_prat, d_rdv, npatient, CONVERT(motif, varchar(50)) AS motif
        FROM pra_rdv_r
        ORDER BY motif;
        
        SELECT n_unique, c_prat, d_rdv, npatient, CONVERT(motif, int(50)) AS motif
        FROM pra_rdv_r
        ORDER BY motif;
        
        SELECT n_unique, c_prat, d_rdv, npatient, CONVERT(varchar(50), motif) AS motif
        FROM pra_rdv_r
        ORDER BY motif;
        
        SELECT n_unique, c_prat, d_rdv, npatient, CAST(varchar(50), motif) AS motif
        FROM pra_rdv_r
        ORDER BY motif;
        
        SELECT n_unique, c_prat, d_rdv, npatient, CONVERT(int(50), motif) AS motif
        FROM pra_rdv_r
        ORDER BY motif;
        
        SELECT n_unique, c_prat, d_rdv, npatient, cast(int(50), motif) AS motif
        FROM pra_rdv_r
        ORDER BY motif;
        
        
        SELECT message_de_lassitude FROM moi WHERE ennervement='summum';
        => J'EN PEUX PLUS !!!!!
        


        Pitié, aidez-moi :-)
        • Partager sur Facebook
        • Partager sur Twitter
          23 novembre 2011 à 20:21:48

          Les LONGs (obsolètes depuis une dizaine d'année, mais on en trouve encore dans des progiciels), c'est l'horreur complète. La seule solution, s'ils ne contiennent rien de plus de 32K, c'est de travailler en PL/SQL, les récupérer dans des VARCHAR2(32000) (les VARCHAR2 sont limités à 4000 pour les tables, mais on peut aller jusqu'à 32K en PL/SQL) et travailler avec cela. Pas évident pour un stagiaire ...

          Hope that helps.
          • Partager sur Facebook
          • Partager sur Twitter

          Probleme de colone de type "LONG"

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown