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 :

PLSQL ORA 942 et 2063


Sujet :

PL/SQL Oracle

  1. #1
    Membre confirmé Avatar de jlm22
    Homme Profil pro
    Etudiant
    Inscrit en
    Décembre 2010
    Messages
    203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Décembre 2010
    Messages : 203
    Par défaut PLSQL ORA 942 et 2063
    Bonjour,

    je réalise en ce moment un script sql qui copie des table d'un base vers une autre et je rencontre actuellement un problème lors de la copie de quelques tables elles ont toutes le même problème c'est à dire Ora 942 table or view does not exist et ORA-02063: precedant line de "base_source".

    Mes requêtes s'exécute parfaitement dans sqldevelopper mais dès qu'elle s'execute dans le script elle me sorte ces 2 erreurs.

    Les tables existent bien, le databaselink fonctionne aussi, je ne vois pas trop où chercher au final.

    Merci de votre aide.

  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
    Si on ne voit pas le script, ça sera difficile à dire...

  3. #3
    Membre confirmé Avatar de jlm22
    Homme Profil pro
    Etudiant
    Inscrit en
    Décembre 2010
    Messages
    203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Décembre 2010
    Messages : 203
    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
    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
     
    create or replace PROCEDURE BDEHISTO AS
     
    v_Periodicite   number;
    v_table		  	varchar2(50);
    v_table_exception varchar2(50);
    v_requete		varchar2(2000);
    v_verif_purge   varchar2(100);
    v_error_code	varchar2(50);
    v_error_message	varchar2(100);
    l_mailhost    VARCHAR2(64) := '*****';
    l_from        VARCHAR2(64) := '****@****.fr';
    l_subject     VARCHAR2(64) := '*****';
    l_to          VARCHAR2(64) := '****.****@gmail.com';
    l_mail_conn   UTL_SMTP.connection;
    l_date_debut 	VARCHAR2(64) := To_CHAR(SYSDATE,'DD-MON-YYYY HH24:MI:SS');
    v_cpt number ;
     
    cursor C1 is
    	   select Latable,periodicite,ladate, ladate2, jointure
    	   from histo;
     
    C1r	   C1%ROWTYPE;
     
    BEGIN
    DBMS_OUTPUT.PUT_LINE ('DEBUT');
    OPEN C1;
        FETCH C1 INTO C1r;
     
        -- on parcours la table Histo
        while C1%FOUND loop
          v_requete:='SELECT COUNT(*) FROM '||C1r.Latable||'@bdepkg';
          EXECUTE IMMEDIATE v_requete into v_cpt ;
          DBMS_OUTPUT.PUT_LINE( To_char( v_cpt ) || ' enregistrements') ;
          DBMS_OUTPUT.PUT_LINE(C1r.Latable);
          v_table_exception:=C1r.latable;
     
        -- si =0 alors il vient d'avoir une purge donc on ne met rien a jour
    		if v_cpt>0 then
    			if C1r.jointure='VBL' then
            v_table_exception:=v_table_exception || ' VBL';
            v_requete := 'delete from '||C1r.latable||' where chronocd in ( select chronocd from vbl@bdepkg where to_date(dpre,''DD/MM/YY'') > TO_DATE(TO_CHAR(SYSDATE-'|| C1r.periodicite||',''DD/MM/YY''),''DD/MM/YY''))';
    				EXECUTE IMMEDIATE v_requete;
    				commit;
     
    				v_requete := 'insert into '||C1r.latable||' select * from '||C1r.latable||'@bdepkg where chronocd in ( select chronocd from vbl@bdepkg where to_date(dpre,''DD/MM/YY'') > TO_DATE(TO_CHAR(SYSDATE-'|| C1r.periodicite||',''DD/MM/YY''),''DD/MM/YY''))';
    				EXECUTE IMMEDIATE v_requete;
    				commit;
     
    			-- jointure par rapport à cart
    			elsif C1r.jointure='CCART' then
            v_table_exception:=v_table_exception || ' CCART';
    				v_requete := 'delete from '||C1r.latable||' where cart in ( select cart from ccart@bdepkg where to_date(dcart,''YYYY/MM/DD'') > TO_DATE(TO_CHAR(SYSDATE-'|| C1r.periodicite||',''YYYY/MM/DD''),''YYYY/MM/DD''))';
    				EXECUTE IMMEDIATE v_requete;
    				commit;
     
    				v_requete := '	insert into '||C1r.latable||' 
    								select * from '||C1r.latable||'@bdepkg 
    								where cart in ( 
    									select cart 
    									from ccart@bdepkg 
    									where to_date(dcart,''YYYY/MM/DD'') > TO_DATE(TO_CHAR(SYSDATE-'|| C1r.periodicite||',''YYYY/MM/DD''),''YYYY/MM/DD''))';
    				EXECUTE IMMEDIATE v_requete;
    				commit;
     
    			-- jointure par rapport au lot
    			elsif C1r.jointure='VLOTS' then
            v_table_exception:=v_table_exception || ' VLOTS';
    				v_requete := '	delete from '||C1r.latable||'
    								where lot in ( 
    									select lot 
    									from vlots@bdepkg 
    									where to_date(dat,''DD/MM/YY'') > TO_DATE(TO_CHAR(SYSDATE-'|| C1r.periodicite||',''DD/MM/YY''),''DD/MM/YY''))';
    				EXECUTE IMMEDIATE v_requete;
    				commit;
     
    				v_requete := '	insert into '||C1r.latable||' 
    								select * from '||C1r.latable||'@bdepkg 
    								where lot in ( 
    									select lot 
    									from vlots@bdepkg 
    									where to_date(dat,''DD/MM/YY'') > TO_DATE(TO_CHAR(SYSDATE-'|| C1r.periodicite||',''DD/MM/YY''),''DD/MM/YY''))';
    				EXECUTE IMMEDIATE v_requete;
    				commit;
    			end if;
     
    			if C1r.ladate is not null then
            v_table_exception:=v_table_exception || ' date1';
    				-- on supprime les anciennes saisies
    				v_requete := 'delete from '|| C1r.Latable ||' 
                  where to_date('|| C1r.ladate ||',''YYYY/MM/DD'') > TO_DATE(TO_CHAR(SYSDATE-'|| C1r.periodicite||',''YYYY/MM/DD''),''YYYY/MM/DD'')';
    				EXECUTE IMMEDIATE v_requete;
    				commit;
     
    				-- on met à jour BDE Histo
    				v_requete := 'insert into '|| C1r.Latable ||' 
                  select * from '|| C1r.Latable ||'@bdepkg 
                  where to_date('|| C1r.ladate ||',''YYYY/MM/DD'') > TO_DATE(TO_CHAR(SYSDATE-'|| C1r.periodicite||',''YYYY/MM/DD''),''YYYY/MM/DD'')'; 
    				EXECUTE IMMEDIATE v_requete;
    				commit;
     
    			elsif C1r.ladate2 is not null then
            v_table_exception:=v_table_exception || ' date2';
    				-- on supprime les anciennes saisies
    				v_requete := 'delete from '|| C1r.Latable ||' 
                  where to_date('|| C1r.ladate2 ||',''DD/MM/YY'') < TO_DATE(TO_CHAR(SYSDATE-'|| C1r.periodicite||',''DD/MM/YY''),''DD/MM/YY'')';
    				EXECUTE IMMEDIATE v_requete;
    				commit;
     
    				-- on met à jour BDE Histo
    				v_requete := 'insert into '|| C1r.Latable ||' 
                  select * from '|| C1r.Latable ||'@bdepkg 
                  where to_date('|| C1r.ladate2 ||',''DD/MM/YY'') < TO_DATE(TO_CHAR(SYSDATE-'|| C1r.periodicite||',''DD/MM/YY''),''DD/MM/YY'')';
    				EXECUTE IMMEDIATE v_requete;
    				commit;
     
          elsif c1r.ladate is null and c1r.ladate2 is null and c1r.jointure is null then
     
            -- on supprime les anciennes saisies
            v_table_exception:=v_table_exception || ' NULL';
    				v_requete := 'TRUNCATE TABLE '||c1r.latable;
    				EXECUTE IMMEDIATE v_requete;
    				commit;
     
    				-- on met à jour BDE Histo
    				v_requete := 'insert into '|| C1r.Latable ||' select * from '|| C1r.Latable ||'@bdepkg';
    				EXECUTE IMMEDIATE v_requete;
    				commit;
     
    			end if;
    		end if;
        FETCH C1 into C1r;
        end loop;
    	-- envoie du mail
        l_mail_conn := UTL_SMTP.open_connection(l_mailhost, 25);
    	UTL_SMTP.helo(l_mail_conn, l_mailhost);
    	UTL_SMTP.mail(l_mail_conn, l_from);
    	UTL_SMTP.rcpt(l_mail_conn, l_to);
     
    	UTL_SMTP.open_data(l_mail_conn);
     
    	UTL_SMTP.write_data(l_mail_conn, 'Date: ' || TO_CHAR(SYSDATE, 'DD-MON-YYYY HH24:MI:SS') || CHR(13));
    	UTL_SMTP.write_data(l_mail_conn, 'From: ' || l_from || CHR(13));
    	UTL_SMTP.write_data(l_mail_conn, 'Subject: ' || l_subject || CHR(13));
    	UTL_SMTP.write_data(l_mail_conn, 'To: ' || l_to || CHR(13));
    	UTL_SMTP.write_data(l_mail_conn, '' || CHR(13));
     
    	-- Multi-line message simulated with a loop calling WRITE_DATA multiple times.
    	UTL_SMTP.write_data(l_mail_conn, '***********************************************************************************'|| CHR(13));
    	UTL_SMTP.write_data(l_mail_conn, 'Lancement de la procédure BDE Histo le ' || l_date_debut||' et fini le '||TO_CHAR(SYSDATE, 'DD-MON-YYYY HH24:MI:SS')||CHR(13));
    	UTL_SMTP.write_data(l_mail_conn, '***********************************************************************************'|| CHR(13));
     
    	UTL_SMTP.write_data(l_mail_conn, '' || CHR(13));
    	UTL_SMTP.close_data(l_mail_conn);
     
    	UTL_SMTP.quit(l_mail_conn);
    CLOSE C1;
    EXCEPTION
       WHEN OTHERS THEN
    	v_error_code := SQLCODE;
    	v_error_message := SQLERRM;
    	l_mail_conn := UTL_SMTP.open_connection(l_mailhost, 25);
    	UTL_SMTP.helo(l_mail_conn, l_mailhost);
    	UTL_SMTP.mail(l_mail_conn, l_from);
    	UTL_SMTP.rcpt(l_mail_conn, l_to);
     
    	UTL_SMTP.open_data(l_mail_conn);
     
    	UTL_SMTP.write_data(l_mail_conn, 'Date: ' || TO_CHAR(SYSDATE, 'DD-MON-YYYY HH24:MI:SS') || CHR(13));
    	UTL_SMTP.write_data(l_mail_conn, 'From: ' || l_from || CHR(13));
    	UTL_SMTP.write_data(l_mail_conn, 'Subject: ' || l_subject || CHR(13));
    	UTL_SMTP.write_data(l_mail_conn, 'To: ' || l_to || CHR(13));
    	UTL_SMTP.write_data(l_mail_conn, '' || CHR(13));
     
    	-- Multi-line message simulated with a loop calling WRITE_DATA multiple times.
     
    	UTL_SMTP.write_data(l_mail_conn, 'Lancement de la procédure BDE Histo le ' || l_date_debut|| ' et fini le '||TO_CHAR(SYSDATE, 'DD-MON-YYYY HH24:MI:SS')|| CHR(13));
    	UTL_SMTP.write_data(l_mail_conn,'ERREUR pendant la procédure : '|| v_error_message ||' au niveau de la table '|| v_table_exception);
     
     
    	UTL_SMTP.write_data(l_mail_conn, '' || CHR(13));
    	UTL_SMTP.close_data(l_mail_conn);
    	UTL_SMTP.quit(l_mail_conn);
    END;
    J'ai mis des variable pour voir ou il en est au moment de l'erreur et il n'execute aucune requete il ne rentre pas dans mes boucles, et j'ai de plus en plus de tables toucher par cette erreur même des table qui n'était pas toucher avant.

  4. #4
    Membre confirmé Avatar de jlm22
    Homme Profil pro
    Etudiant
    Inscrit en
    Décembre 2010
    Messages
    203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Décembre 2010
    Messages : 203
    Par défaut
    Après avoir enlever toute les tables qui posait problème le script plante dès le départ, je précise que sa compile.

  5. #5
    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
    Vous êtes en PL/SQL, ce qui change pas mal de choses...

    Je suppose que le compte utilisé par le DBLINK, on va l'appeler Nestor, accède aux tables grâce à un rôle (au hasard : DBA). En PL/SQL, les privilèges obtenus à travers un rôle sont ignorés. Il faut donc donner les privilèges table par table à Nestor.
    Oui, on est tous d'accord, c'est pénible !

    PS : je passe les subtilités AUTHID CURRENT_USER.

  6. #6
    Membre confirmé Avatar de jlm22
    Homme Profil pro
    Etudiant
    Inscrit en
    Décembre 2010
    Messages
    203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Décembre 2010
    Messages : 203
    Par défaut
    Sa n'explique pas pourquoi mon script plante dès le démarrage.

    En attendant j'ai fait un drop table de ma table histo (celle que je parcours avec le curseur dans le script) et je l'ai reconstruite et va savoir pourquoi sa marche ! Mais bon je suis pas à l'abris que le problème revienne.

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

Discussions similaires

  1. Got ORA-4030 while running PLSQL
    Par dngaya dans le forum PL/SQL
    Réponses: 3
    Dernier message: 04/10/2006, 16h07
  2. Réponses: 3
    Dernier message: 07/02/2006, 09h14
  3. erreur "ORA-22905" lors de l'execution d'un requet
    Par benji999 dans le forum Administration
    Réponses: 26
    Dernier message: 14/04/2004, 11h47
  4. Réponses: 14
    Dernier message: 02/04/2004, 14h33
  5. Oracle ORA-00020 : maximum de processus
    Par Lisou dans le forum Administration
    Réponses: 5
    Dernier message: 22/03/2004, 16h27

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