1. #1
    Nouveau Membre du Club
    Profil pro
    Inscrit en
    janvier 2005
    Messages
    182
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : janvier 2005
    Messages : 182
    Points : 37
    Points
    37

    Par défaut Procédure stockée - Curseur accédant à une table distante

    J'ai une base Oracle dans laquelle j'ai deux users A et B.
    Je suis connecté à A.
    Je cherche à créer un procédure stockée dans laquelle j'ai un cursor CUR_Purge qui doit aller voir des tables du user B.
    J'ai le code suivant :
    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
    CREATE OR REPLACE PROCEDURE PROC_K_CLI_PURGE(Jour date)
    AS
      CURSOR CUR_Purge IS
    SELECT cd_client, '' ka_cli
    FROM (
           select cd_client from B.Table1
         )
    ;
    REC_CUR_PURGE CUR_PURGE%ROWTYPE;
    BEGIN
       OPEN CUR_PURGE;
       LOOP
          FETCH CUR_PURGE INTO REC_CUR_PURGE;
          EXIT WHEN CUR_PURGE%NOTFOUND;
          INSERT INTO k_cli_purge (CD_CLIENT, KA_CLI, A_SUPPRIMER) values (REC_CUR_PURGE.CD_CLIENT,REC_CUR_PURGE.KA_CLI,'1') ;
       END LOOP;
       CLOSE CUR_Purge;
    END;
    Mon problème est que ma procédure refuse de compiler (Warning: compiled but with compilation errors).
    Si je remplace
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select cd_client from B.Table1
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select cd_client from A.Table1
    Je n'ai aucun problème.
    Si je me met simplement dans un SQL et que je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select cd_client from B.Table1
    cela fonctionne.

    Quelqu'une a-t-il une idée?
    Merci d'avance.

  2. #2
    Membre éclairé Avatar de LBO72
    Profil pro
    Inscrit en
    mai 2007
    Messages
    406
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : mai 2007
    Messages : 406
    Points : 313
    Points
    313

    Par défaut

    C'est une erreur qui m'a cassé la tête à plusieurs reprises :-) et pour t'éviter cela, il faut que tu te connectes sous le user B et tu fasses des grants select,... on les tables du user B to user A.

    LBO72.

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