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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Février 2017
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : Belgique

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

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

    J'ai un petit souci avec ma procédure, j'essaie d'inserer des données dans ma nouvelle table deltasid_test et selectionnant les données dans les tables v$session, v$ssestat et v$statname, cependant j'ai une boucle infinis des sessions, pourriez vous essayez de voir ma synthaxes s'il vous plait, j'ai surement du placer un bout de code au mauvais endroit . 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
    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
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    create or replace Type tab_delta1 As Varray(48) Of number;
    /
    create or replace Type tab_delta2 As Varray(48) Of number;
    /
    create or replace Type tab_delta3 As Varray(48) Of number;
    /
    create or replace Type tab_delta4 As Varray(48) Of number;
    /
    create or replace Type tab_delta5 As Varray(48) Of number;
    /
    create or replace Type tab_delta6 As Varray(48) Of number;
    /
    create or replace Type tab_delta7 As Varray(48) Of number;
    /
    create or replace Type tab_delta8 As Varray(48) Of number;
    /
    create or replace Type tab_delta9 As Varray(48) Of number;
    /
    create or replace Type tab_delta10 As Varray(48) Of number;
    /
    create or replace TYPE type_varray_date is VARRAY(48) of date;
    /
    drop type type_varray force;
     
    CREATE TABLE deltasid_test (
    id_delta INTEGER,
    delta_idx1 varchar2(20),
    delta_idx2 varchar2(40),
    statistique_type varchar2(100),
    start_date date,
    refresh_date date,
    specification tabSpecification,
    delta_1 tab_delta1,
    delta_2 tab_delta2,
    delta_3 tab_delta3,
    delta_4 tab_delta4,
    delta_5 tab_delta5,
    delta_6 tab_delta6,
    delta_7 tab_delta7,
    delta_8 tab_delta8,
    delta_9 tab_delta9,
    delta_10 tab_delta10
     
    );
     
    --drop table deltasid_test;
     
     
    create or replace procedure toto as
     
    V_tab_delta1 tab_delta1 := tab_delta1(); --initialise
    V_tab_delta2 tab_delta2 := tab_delta2();
    V_tab_delta3 tab_delta3 := tab_delta3();
    V_tab_delta4 tab_delta4 := tab_delta4();
    V_tab_delta5 tab_delta5 := tab_delta5();
    V_tab_delta6 tab_delta6 := tab_delta6();
    V_tab_delta7 tab_delta7 := tab_delta7();
    V_tab_delta8 tab_delta8 := tab_delta8();
    V_tab_delta9 tab_delta9 := tab_delta9();
    V_tab_delta10 tab_delta10 := tab_delta10();
     
     
     
    v_tab_Specification tabSpecification := tabSpecification(); --initialise
     
     
     
     
    ln_serial number;
    ln_delta_idx1 number;
    lv_delta_idx2 varchar2(20);
    lv_statistique_type varchar2(100);
    ld_start_date date;
    ln_delta1 number;
    lv_username varchar2(30);
    lv_machine varchar2(64);
    lv_type varchar2(10);
    lln_schemaname varchar2(64);
    lv_osuser varchar2(64);
    lv_program varchar2(64);
    lv_service_name varchar2(64);
    ln_schema number;
    ln_sql_hash_value number;
    ln_prev_hash_value number;
    ln_module_hash number;
    ln_action_hash number;
    ln_fixed_table_sequence number;
     
    ld_Date date;
     
    -- Déclaration du curseur
    CURSOR C_STAT IS
    Select se.serial#, to_char(se.SID, '9999') as sid, to_char(se.logon_time, 'DD/MM/YYYY HH24:MI:SS') as logon_time, st.name, si.startup_time, se.username, se.machine, se.type, se.schemaname, se.osuser, se.program, se.service_name, ss.value, se.schema#, se.SQL_HASH_VALUE, se.PREV_HASH_VALUE, se.MODULE_HASH, se.ACTION_HASH, se.FIXED_TABLE_SEQUENCE
    FROM v$session se
    INNER JOIN v$sesstat ss
    ON ss.SID = se.SID 
    INNER JOIN v$statname st
    ON st.statistic# = ss.statistic# 
    INNER JOIN v$instance si 
    ON si.con_id = st.con_id;
    --WHERE st.statistic# = 19;
     
     
    CURSOR C_delta IS
    select id_delta from deltasid_test;
     
    ll_sid_previous number;
     
    LastNumber number;
    LastNumber2 number;
    LastNumber3 number;
    LastNumber4 number;
    LastNumber5 number;
    LastNumber6 number;
    LastNumber7 number;
    LastNumber8 number;
    LastNumber9 number;
    LastNumber10 number;
    LastSpecification varchar2(10000);
     
    ln_count number;
     
     
    Begin
    OPEN C_STAT;
    LOOP
    FETCH C_STAT INTO ln_serial, ln_delta_idx1, lv_delta_idx2, lv_statistique_type, ld_start_date, lv_username, lv_machine, lv_type, lln_schemaname, lv_osuser, lv_program, lv_service_name, ln_delta1, ln_schema, ln_sql_hash_value, ln_prev_hash_value, ln_module_hash, ln_action_hash, ln_fixed_table_sequence; 
    EXIT WHEN C_STAT%NOTFOUND;
     
     
     
    SELECT COUNT(*)
    INTO ln_count
    FROM deltasid_test
    WHERE delta_idx1 = ln_delta_idx1 
    AND delta_idx2 = lv_delta_idx2
    AND lv_statistique_type = 'Session'; 
     
     
     
    LastNumber := V_tab_delta1.COUNT+1;
    LastNumber2 := V_tab_delta2.COUNT+1;
    LastNumber3 := V_tab_delta3.COUNT+1;
    LastNumber4 := V_tab_delta4.COUNT+1;
    LastNumber5 := V_tab_delta5.COUNT+1;
    LastNumber6 := V_tab_delta6.COUNT+1;
    LastNumber7 := V_tab_delta7.COUNT+1;
    LastNumber8 := V_tab_delta8.COUNT+1;
    LastNumber9 := V_tab_delta9.COUNT+1;
    LastNumber10 := V_tab_delta10.COUNT+1;
     
    LastSpecification := v_tab_Specification.COUNT+1;
     
    if ln_count = 0 THEN 
     
    if LastNumber<=V_tab_delta1.LIMIT THEN
     
    V_tab_delta1.extend;
    V_tab_delta1(LastNumber) := ln_delta1;
     
    END IF;	
    if LastNumber4<=V_tab_delta4.LIMIT THEN
     
    V_tab_delta4.extend;
    V_tab_delta4(LastNumber4) := 0;
     
    END IF;
     
    if LastNumber5<=V_tab_delta5.LIMIT THEN
     
    V_tab_delta5.extend;
    V_tab_delta5(LastNumber5) := 0;
     
    END IF;
     
    if LastNumber6<=V_tab_delta6.LIMIT THEN
     
    V_tab_delta6.extend;
    V_tab_delta6(LastNumber6) := 0;
     
    END IF;
     
    if LastNumber7<=V_tab_delta7.LIMIT THEN
     
    V_tab_delta7.extend;
    V_tab_delta7(LastNumber7) := 0;
     
    END IF;
     
    if LastNumber8<=V_tab_delta8.LIMIT THEN
     
    V_tab_delta8.extend;
    V_tab_delta8(LastNumber8) := 0;
     
    END IF;
     
    if LastNumber9<=V_tab_delta9.LIMIT THEN
     
    V_tab_delta9.extend;
    V_tab_delta9(LastNumber9) := 0;
     
    END IF;
     
    if LastNumber10<=V_tab_delta10.LIMIT THEN
     
    V_tab_delta10.extend;
    V_tab_delta10(LastNumber10) := 0;
     
    END IF;
     
    if LastNumber2<=V_tab_delta2.LIMIT THEN
    V_tab_delta2.extend(4);
    V_tab_delta2(LastNumber2+1) := ln_schema;
    V_tab_delta2(LastNumber2+2) := ln_sql_hash_value;
    V_tab_delta2(LastNumber2+3) := ln_prev_hash_value;
    END IF;	 
     
    if LastNumber3<=V_tab_delta3.LIMIT THEN
    V_tab_delta3.extend(4);
    V_tab_delta3(LastNumber3+1) := ln_module_hash;
    V_tab_delta3(LastNumber3+2) := ln_action_hash;
    V_tab_delta3(LastNumber3+3) := ln_fixed_table_sequence;
    END IF;
     
    v_tab_Specification.extend(8);
    v_tab_Specification(LastSpecification+1) := lv_username;
    v_tab_Specification(LastSpecification+2) := lv_machine;
    v_tab_Specification(LastSpecification+3) := lv_type;
    v_tab_Specification(LastSpecification+4) := lln_schemaname;
    v_tab_Specification(LastSpecification+5) := lv_osuser;
    v_tab_Specification(LastSpecification+6) := lv_program;
    v_tab_Specification(LastSpecification+7) := lv_service_name;
     
     
    insert
    into deltasid_test ( id_delta, delta_idx1, delta_idx2, statistique_type, start_date, refresh_date, specification, delta_1, delta_2, delta_3, delta_4, delta_5, delta_6, delta_7, delta_8, delta_9, delta_10 )
    values ( ln_serial, ln_delta_idx1, lv_delta_idx2, 'Session', ld_start_date, sysdate, v_tab_Specification, V_tab_delta1, V_tab_delta2, V_tab_delta3, V_tab_delta4, V_tab_delta5, V_tab_delta6, V_tab_delta7, V_tab_delta8, V_tab_delta9, V_tab_delta10);
     
    V_tab_delta1 := tab_delta1(); --Initialisation
    V_tab_delta2 := tab_delta2(); 
    V_tab_delta3 := tab_delta3(); 
    V_tab_delta4 := tab_delta4(); 
    V_tab_delta5 := tab_delta5(); 
    V_tab_delta6 := tab_delta6(); 
    V_tab_delta7 := tab_delta7(); 
    V_tab_delta8 := tab_delta8(); 
    V_tab_delta9 := tab_delta9(); 
    V_tab_delta10 := tab_delta10(); 
    v_tab_Specification :=tabSpecification();
    else 
     
    UPDATE deltasid_test
    SET refresh_date = sysdate 
    WHERE id_delta = ln_serial; 
     
    END IF;
     
    ll_sid_previous := ln_delta_idx1;
     
    END LOOP;
    if LastNumber2<=V_tab_delta2.LIMIT THEN
    V_tab_delta2.extend(4);
    V_tab_delta2(LastNumber2+1) := ln_schema;
    V_tab_delta2(LastNumber2+2) := ln_sql_hash_value;
    V_tab_delta2(LastNumber2+3) := ln_prev_hash_value;
    END IF;	 
     
    if LastNumber3<=V_tab_delta3.LIMIT THEN
    V_tab_delta3.extend(4);
    V_tab_delta3(LastNumber3+1) := ln_module_hash;
    V_tab_delta3(LastNumber3+2) := ln_action_hash;
    V_tab_delta3(LastNumber3+3) := ln_fixed_table_sequence;
    END IF;
     
     
    v_tab_Specification.extend(8);
    v_tab_Specification(LastSpecification+1) := lv_username;
    v_tab_Specification(LastSpecification+2) := lv_machine;
    v_tab_Specification(LastSpecification+3) := lv_type;
    v_tab_Specification(LastSpecification+4) := lln_schemaname;
    v_tab_Specification(LastSpecification+5) := lv_osuser;
    v_tab_Specification(LastSpecification+6) := lv_program;
    v_tab_Specification(LastSpecification+7) := lv_service_name;
     
     
    insert
    into deltasid_test ( id_delta, delta_idx1, delta_idx2, statistique_type, start_date, refresh_date, specification, delta_1, delta_2, delta_3, delta_4, delta_5, delta_6, delta_7, delta_8, delta_9, delta_10 )
    values ( ln_serial, ln_delta_idx1, lv_delta_idx2, 'Session', ld_start_date, sysdate, v_tab_Specification, V_tab_delta1, V_tab_delta2, V_tab_delta3, V_tab_delta4, V_tab_delta5, V_tab_delta6, V_tab_delta7, V_tab_delta8, V_tab_delta9, V_tab_delta10);
     
    CLOSE C_STAT;
    commit;
    End;
    /
     
    execute oui1; --Commande executé

  2. #2
    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
    Pourquoi vous créez dix fois le même type qui est juste un varray(48) des numbers ?
    Puis il manque la définition du type "tabSpecification" ce qui rend impossible la création de la table.
    Votre requête est spécifique à Oracle 12 elle ne passe pas sur 11.
    Pas de commentaires où vous expliquez ce que vous voulez faire.

    Cela me rappelle une des premières machines avec laquelle j'ai travaillé il y a long temps et qui avait le SO en français et annonçait fièrement quand elle compilait mes programmes bogués, écrites sur des carte perforées, quelque chose de type "il y a trop d'erreurs, abandon du travail!". Comme elle, moi aussi j'ai cédé.

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

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

    Informations forums :
    Inscription : Février 2017
    Messages : 16
    Par défaut
    Quand vous dites que ma requête est spécifique à Oracle 12 elle ne passe pas sur 11, cela veut dire ?
    dans ma procédure j'essai de faire une insertion des données se trouvant dans certains colonne des tables v$session, v$ssestat et v$statname, ... mais cependant j'ai une boucle infini des données alors qu'il n'y a qu'une soixante de session, les sessions se repete

  4. #4
    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 tway91 Voir le message
    Quand vous dites que ma requête est spécifique à Oracle 12 elle ne passe pas sur 11, cela veut dire ?
    ...
    C'est ce qu'il me semble.

    Citation Envoyé par tway91 Voir le message
    ...
    dans ma procédure j'essai de faire une insertion des données se trouvant dans certains colonne des tables v$session, v$ssestat et v$statname, ... mais cependant j'ai une boucle infini des données alors qu'il n'y a qu'une soixante de session, les sessions se repete
    Certainement la procédure n'est pas bien écrite. Mais je viens de constater que le code n'est plus disponible.

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