IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SQL Oracle Discussion :

Sous select dans un package


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 80
    Par défaut Sous select dans un package
    Bonjour à tous,

    J'ai un problème de compilation d'un package à cause d'un sous select dans une procédure. Quand j'exécute mon select séparemment j'ai le bon résultat. Mais dès que je compile le package j'ai une erreur qui est du uniquement à ce sous select.

    Y-a-t-il une syntaxe particulière pour les sous select dans une procédure ?

    Je suis sous Oracle 8i.

    Voici mon code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
     
    PROCEDURE p_edit_recap_quartier(
    		a_Result IN OUT package_edition.ResultSet
    	) IS
    	BEGIN
    	     OPEN a_Result FOR
    			select qua.qua_libelle,
    			       qua.qua_code,
    			       ged.ged_code,
    			       (select count(*) from ca85.v_gr_adhesion v where v.adh_qua_code = qua.qua_code) nb_exploitation
    			from ca85.gr_geda ged, ca85.gr_quartier qua, temp_ident
    			where qua.qua_ged_code = ged.ged_code
    			and temp_ident.id_identifiant = ged.ged_code
    			order by ged.ged_code, qua.qua_code;
     
    	END p_edit_recap_quartier;
    Merci pour vos réponses.

    -- cli16 --

  2. #2
    Rédacteur

    Homme Profil pro
    Consultant / formateur Oracle et SQL Server
    Inscrit en
    Décembre 2002
    Messages
    3 461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant / formateur Oracle et SQL Server

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 461
    Par défaut
    Mais dès que je compile le package j'ai une erreur qui est du uniquement à ce sous select.
    Et quels sont le code et le libellé exacts de cette erreur ??

  3. #3
    Membre expérimenté Avatar de Loyd1974
    Profil pro
    Inscrit en
    Août 2007
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 176
    Par défaut
    Citation Envoyé par Pomalaix Voir le message
    Et quels sont le code et le libellé exacts de cette erreur ??
    Ce serait effectivement plus simple si on connaissait l'erreur. Sinon, as-tu vérifié que la définition de ton
    package_edition.ResultSet correspond bien aux colonnes que tu ramène dans ton SELECT

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 80
    Par défaut
    merci pour vos réponses

    j'ai juste l'erreur "package compilé avec erreur".... j'ai pas plus d'info

  5. #5
    McM
    McM est déconnecté
    Expert confirmé

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Billets dans le blog
    4

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 80
    Par défaut
    Voici l'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    SQL> show error;
    Erreurs pour PACKAGE BODY PACKAGE_EDITION :
     
    LINE/COL ERROR
    -------- -----------------------------------------------------------------
    142/12   PLS-00103: Symbole "SELECT" rencontrÚ Ó la place d'un des
             symboles suivants :
             ( - + mod not null others <an identifier>
             <a double-quoted delimited-identifier> <a bind variable> avg
             count current exists max min prior sql stddev sum variance
             execute forall time timestamp interval date
             <a string literal with character set specification>
             <a number> <a single-quoted SQL string>
     
    142/95   PLS-00103: Symbole "NB_EXPLOITATION" rencontrÚ Ó la place d'un
             des symboles suivants :
     
    LINE/COL ERROR
    -------- -----------------------------------------------------------------
             ; return returning and or

  7. #7
    Membre averti
    Inscrit en
    Février 2009
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 46
    Par défaut
    C'est à cause de parametrage de la base. Mais plus precis, c'est lequelle parametre, je ne connais pas!

  8. #8
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Par défaut
    Citation Envoyé par cli16 Voir le message
    ...
    Je suis sous Oracle 8i.

    ...
    En 8i le moteur SQL n'est pas le même entre Pl/SQL et SQL. La solution est de passer par un cursor dynamique
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    SQL> variable l_vrc refcursor
    SQL> r
      1  begin
      2    open :l_vrc for 'Select (select count(*) n from dual) from dual';
      3* end;
     
    PL/SQL procedure successfully completed.
     
    SQL> print l_vrc
     
    (SELECTCOUNT(*)NFROMDUAL)
    -------------------------
                            1

  9. #9
    Membre Expert Avatar de fatsora
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 103
    Par défaut
    Tu est en train d'ouvrir 3 discussions pour le meme probleme sur le meme site (sic) !!!

  10. #10
    Membre éclairé Avatar de rvfranck
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    746
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 746
    Par défaut
    Citation Envoyé par cli16 Voir le message
    Bonjour à tous,
    Quand j'exécute mon select séparemment j'ai le bon résultat. Mais dès que je compile le package j'ai une erreur qui est du uniquement à ce sous select.
    Tu veux dire quand tu executes seulement le sous select, ou le select entier?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT qua.qua_libelle,
    			       qua.qua_code,
    			       ged.ged_code,
    			       (SELECT count(*) FROM ca85.v_gr_adhesion v WHERE v.adh_qua_code = qua.qua_code) nb_exploitation
    			FROM ca85.gr_geda ged, ca85.gr_quartier qua, temp_ident
    			WHERE qua.qua_ged_code = ged.ged_code
    			AND temp_ident.id_identifiant = ged.ged_code
    			ORDER BY ged.ged_code, qua.qua_code;
    Est ce que le select entier te donne les resultats attendus?

  11. #11
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    Visiblement c'est tout simplement pas autorisée en 8i
    http://www.cedet.dk/oracle/oif/scalar_subquery.html

    La syntaxe de la forme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT col, (SELECT ... FROM ...) 
      FROM ...
    Est acceptée en SQL mais pas PL/SQL qui n'a pas le même moteur SQL. De toute façon, c'est une écriture qui est déconseillée

    En tout cas c'est très limité en 8i, cf Note 255799.1

  12. #12
    McM
    McM est déconnecté
    Expert confirmé

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Billets dans le blog
    4
    Par défaut
    Ne continuez pas à répondre à ce post de 2007 relancé par kinkichin.

    Sauf si vous voulez vous amuser à chercher bien sur, mais n'attendez pas une réponse.

Discussions similaires

  1. Sous-select dans la clause FROM
    Par DIJON dans le forum SQL
    Réponses: 16
    Dernier message: 16/11/2007, 18h24
  2. Sous requêtes dans un SELECT ??
    Par solp dans le forum Langage SQL
    Réponses: 2
    Dernier message: 22/03/2006, 15h39
  3. Sous-requête dans la clause Select
    Par Danger dans le forum WinDev
    Réponses: 2
    Dernier message: 24/05/2005, 17h33
  4. [firebird] sous select dans un select
    Par gdido dans le forum SQL
    Réponses: 2
    Dernier message: 14/05/2004, 09h57
  5. select dans un trigger sous Postgresql
    Par kastor_grog dans le forum Requêtes
    Réponses: 1
    Dernier message: 03/09/2003, 17h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo