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

Oracle Discussion :

pb: sql dynamique


Sujet :

Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Février 2004
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 9
    Par défaut pb: sql dynamique
    Salut,

    j'essaie de construire une requête ave du sql dynamique et je m'apui sur les tutoriels de developpez.com
    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
    declare
    TYPE aVARCHAR IS TABLE OF VARCHAR(500);
    o_Departement aVARCHAR;
    o_IdDepartement aVARCHAR;
    o_CodeDepartement aVARCHAR;
    lc$requete varchar2(1000);
     
    begin
       lc$requete:='SELECT id_departement, departement, code_departement   FROM departement WHERE dt_debut <= sysdate AND dt_fin > sysdate order by departement';
     
       EXECUTE IMMEDIATE lc$requete  BULK COLLECT into o_Departement, o_IdDepartement, o_CodeDepartement;
    end;
    j'ai alors le message suivant quand je veux compiler :

    ORA-06550: Ligne 10, colonne 32 :
    PLS-00103: Symbole "BULK" rencontré à la place d'un des symboles suivants :

    . ( * @ % & = - + ; < / > at in mod not rem return returning
    <an exponent (**)> <> or != or ~= >= <= <> and or like
    between into using is null is not || is dangling
    J'ai essayer d'autres choses comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    lc$requete:='SELECT id_departement, departement, code_departement FROM departement WHERE dt_debut <= sysdate AND dt_fin > sysdate	order by departement';
       OPEN Emp_cv for LC$Requete ;
    iCount := iCount + 1;
    o_RecordCount := Emp_cv%ROWCOUNT;
    FETCH Emp_cv BULK COLLECT into o_Departement, o_IdDepartement, o_CodeDepartement;
    CLOSE Emp_cv ;
    La compile passe bien mais lors de l'executtion j'ai le message suivant :

    ORA-06550: Ligne 2, colonne 0 :
    PLS-00103: Symbole "end-of-file" rencontré à la place d'un des symboles suivants :

    begin function package pragma procedure subtype type use
    <an identifier> <a double-quoted delimited-identifier> cursor
    form current
    quelqu'un connait il mieux le sql dynamique que le tutoriel developpez.com

    [Modération : Balises Quote et Code ajoutées par LeoAnderson]

  2. #2
    Rédacteur

    Inscrit en
    Septembre 2004
    Messages
    626
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 626
    Par défaut
    Je suis pas spécialiste, mais ca ressemble fortement à de l'Oracle.

    Vous auriez plus de chance d'avoir une réponse pertinente si vous aviez posté sur le forum Oracle.

    Je demande à un modérateur le déplacement du fil.


    Sangoku.
    In the heart of the truly greats, perfection is never achieved but endlessly pursued.

    Mon article sur les fonctions analytiques d'Oracle (calcul de moyennes mobiles, de quartiles et bien d'autres...)

  3. #3
    Rédacteur

    Inscrit en
    Septembre 2004
    Messages
    626
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 626
    Par défaut
    Simple question : Oracle quelle version ?


    Laly.
    In the heart of the truly greats, perfection is never achieved but endlessly pursued.

    Mon article sur les fonctions analytiques d'Oracle (calcul de moyennes mobiles, de quartiles et bien d'autres...)

  4. #4
    Membre habitué
    Inscrit en
    Février 2004
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 9
    Par défaut
    c oracle 8.1 !

  5. #5
    Membre éclairé
    Inscrit en
    Mai 2004
    Messages
    297
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 297
    Par défaut
    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
     
    DECLARE
    TYPE ResCurTyp IS REF CURSOR;
      c_ressource		 ResCurTyp;
      sql_stmt	 LONG;
     
    BEGIN
      sql_stmt := 'SELECT ressource1, ressource2 FROM RESSOURCES';
     
     
    OPEN c_ressource for sql_stmt;
      LOOP
      FETCH c_ressource into vres1, vres2;
         EXIT WHEN c_ressource %NOTFOUND;
         ...
      END LOOP;
    Voilà cela devrait t'aider

    Version oracle 8.1.6 mini je crois

  6. #6
    Rédacteur

    Inscrit en
    Septembre 2004
    Messages
    626
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 626
    Par défaut
    Citation Envoyé par vegeta7895
    c oracle 8.1 !
    Ca m'étonne ! J'ai l'impression qu'il bute sur le mot BULK. Si je me trompe pas, le BULK COLLECT a été introduit sous 8i.

    Que donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select * from V$VERSION;

    Laly.
    In the heart of the truly greats, perfection is never achieved but endlessly pursued.

    Mon article sur les fonctions analytiques d'Oracle (calcul de moyennes mobiles, de quartiles et bien d'autres...)

  7. #7
    Membre habitué
    Inscrit en
    Février 2004
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 9
    Par défaut
    Oracle8i Enterprise Edition Release 8.1.7.4.0 - Production
    PL/SQL Release 8.1.7.4.0 - Production
    CORE 8.1.7.0.0 Production
    TNS for IBM/AIX RISC System/6000: Version 8.1.7.4.0 - Production
    NLSRTL Version 3.4.1.0.0 - Production

    voila j'ai copier toutes les lignes

  8. #8
    Membre habitué
    Inscrit en
    Février 2004
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 9
    Par défaut
    oracle ne compile pas le BULK COLLECT
    lorque cette instruction est introduite avec 'EXECUTE IMMEDIATE'
    sinon elle fonctionne

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Prob SQL dynamique
    Par anthony8 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 30/09/2004, 09h53
  2. Appel de function en SQL Dynamique
    Par dkd dans le forum Oracle
    Réponses: 22
    Dernier message: 28/09/2004, 18h01
  3. SQL dynamique : pb de syntaxe
    Par Pasiphae dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 23/08/2004, 16h50
  4. SQL dynamique
    Par Etienne1 dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 16/08/2004, 10h18
  5. SQL Dynamique - Materialized view
    Par Simeans2004 dans le forum SQL
    Réponses: 15
    Dernier message: 10/06/2004, 17h56

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