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

PL/SQL Oracle Discussion :

Problème de syntaxe


Sujet :

PL/SQL Oracle

  1. #1
    Membre à l'essai
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Février 2017
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2017
    Messages : 16
    Points : 16
    Points
    16
    Par défaut Problème de syntaxe
    Bonjour,

    J'aimerais inserer une donnée dans une autre table mais j'ai des erreurs de synthaxe, j'apprend à programmer en pl/sql aidez moi a corriger ces erreurs please
    requete :


    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
     
    DECLARE
       TYPE tabnumber_test IS VARRAY(20) OF number(30);
       tab tabnumber_test;
       --tab = tabnumber_test();   --initialise
     li_id number;
    statictic2 number;
    value2 tabnumber_test;
     
    -- Déclaration du curseur
    CURSOR C_EMP IS
    Select sid, CON_ID, value From v$sesstat
    where sid = 19;
     
    ll_sid_previous number;
     
     dernierNombre INTEGER;
     
     
    Begin
    OPEN C_EMP;
    LOOP
    --FETCH C_EMP INTO li_id, statictic2, value2;                                  
    EXIT WHEN C_EMP%NOTFOUND;
     
     
     
    for ligne in delta_test.FIRST..delta_test.LAST  loop
    	  select id from (select * from delta_test) where ROWNUM = ligne;
        DBMS_OUTPUT.PUT_LINE(ll_sid_previous);
     
    	if ll_sid_previous <> null AND li_id = ll_sid_previous then
     
    		   dernierNombre := tab.COUNT+1;
     
    				if dernierNombre<=tab.LIMIT THEN
    					tab(dernierNombre) :=  ' ; '|| value2;
    					dbms_output.put_line( tab.ll_sid_previous|| ' ; '|| tab.value2);
     
    				END IF;
     
      else            
                  insert into delta_test (id, statistic, nombre)
                  values (li_id, statictic2, value2);             
     
      END IF;
    END LOOP;
    END LOOP;
    CLOSE C_EMP;
    commit;
    End;
     
    /
    Mes erreurs :

    Error report -
    ORA-06550: line 27, column 25:
    PLS-00302: component 'FIRST' must be declared
    ORA-06550: line 27, column 1:
    PL/SQL: Statement ignored
    06550. 00000 - "line %s, column %s:\n%s"
    *Cause: Usually a PL/SQL compilation error.
    *Action:

  2. #2
    Membre émérite
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    1 993
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 1 993
    Points : 2 499
    Points
    2 499
    Par défaut
    C'est quoi delta_test?
    Tu ne l'as pas déclaré
    DBA Oracle
    Rédacteur du blog : dbaoraclesql.canalblog.com

  3. #3
    Membre à l'essai
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Février 2017
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2017
    Messages : 16
    Points : 16
    Points
    16
    Par défaut
    c'est une table je l'ai déjà crée :

    CREATE TABLE DELTA_TEST
    ( idnumber,
    statistic number,
    nombre tabnumber_test
    )
    ;

  4. #4
    Membre à l'essai
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Février 2017
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2017
    Messages : 16
    Points : 16
    Points
    16
    Par défaut
    Finalement j'ai réglé le problème, mais il y a aucune donnée qui s'insere a la table delta_test, je ne vois vraiment pas pourquoi :/ help help voici le 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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    create or replace Type tabNumber_test As Varray(48) Of number;
    /
     
     
    set serveroutput on size 100000 
    DECLARE
       --TYPE tabnumber_test2 IS VARRAY(48) OF number;
       --tab tabnumber_test;
       tab tabnumber_test := tabnumber_test();   --initialise
       --tab2 tabnumber_test2;
     
     li_id number;
    statictic2 number;
    value2 number;
     
    -- Déclaration du curseur
    CURSOR C_EMP IS
    Select sid, CON_ID, value From v$sesstat where rownum < 10000;
     
    CURSOR C_delta_test IS
    select id from delta_test;
     
    ll_sid_previous number;
     
     dernierNombre INTEGER;
     
     
     
    Begin
    OPEN C_EMP;
    LOOP
    FETCH C_EMP INTO li_id, statictic2, value2;                                  
    EXIT WHEN C_EMP%NOTFOUND;
     
    --for lpc2 in delta_test.FIRST..delta_test.LAST  loop
    for lpc2 in C_delta_test loop
    	  --select id from /*(select * from delta_test)*/ delta_test where ROWNUM = ligne;
        DBMS_OUTPUT.PUT_LINE(ll_sid_previous);
     
      dernierNombre := tab.COUNT+1;
     DBMS_OUTPUT.PUT_line('Test : '||  dernierNombre);
     
    	if ll_sid_previous is null or li_id = ll_sid_previous then
     
    		   dernierNombre := tab.COUNT+1;
    		   DBMS_OUTPUT.PUT_line('TEST : '||  dernierNombre);
    				if dernierNombre<=tab.LIMIT THEN
    					--tab(dernierNombre) :=  ' ; '|| value2;
              tab.extend;
              tab(dernierNombre) :=  value2;
    					--dbms_output.put_line( ll_sid_previous|| ' ; '|| tab(dernierNombre));
              dbms_output.put_line( ll_sid_previous);
    				END IF;	           
      else            
        --dbms_output.put_line(tab(dernierNombre));
             insert into delta_test (id, statistic)
             values (li_id, statictic2);
     
             --tab2 := tab;
     
             update delta_test
             set nombre = tab
             where id = li_id;
     
     
              dbms_output.put_line( ll_sid_previous);
      END IF;
      ll_sid_previous := lpc2.id;
    END LOOP;
     
    END LOOP;
    CLOSE C_EMP;
     
    commit;
    End;
    /

  5. #5
    Membre émérite
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    1 993
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 1 993
    Points : 2 499
    Points
    2 499
    Par défaut
    Dans ce cas là tu ne peux pas parcourir ta table avec les mots clés FIRST et LAST, c'est réservé aux objets de type tableaux.
    C'est expliqué ici : http://combot.univ-tln.fr/loris/admin/plsql/varray.html

    Il faut revoir ton code car l'instruction suivante n'a pas de sens.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for ligne in delta_test.FIRST..delta_test.LAST loop
    DBA Oracle
    Rédacteur du blog : dbaoraclesql.canalblog.com

  6. #6
    Membre à l'essai
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Février 2017
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2017
    Messages : 16
    Points : 16
    Points
    16
    Par défaut
    Merci, j'ai résolu le problème !!! tout fonctionne

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

Discussions similaires

  1. Problème de syntaxe - elements['x'].value
    Par Equus dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 22/02/2005, 11h22
  2. [Interbase] Problème de syntaxe SQL
    Par navis84 dans le forum InterBase
    Réponses: 4
    Dernier message: 22/12/2004, 17h07
  3. Problème de syntaxe
    Par Mister_FX dans le forum ASP
    Réponses: 5
    Dernier message: 30/06/2004, 10h01
  4. Problème de syntaxe ADO ...
    Par bendev dans le forum ASP
    Réponses: 2
    Dernier message: 15/04/2004, 14h38
  5. Réponses: 2
    Dernier message: 08/03/2004, 15h10

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