Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 2 sur 2
  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 : 33
    Points
    33

    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 :
    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 :
    SELECT cd_client FROM B.Table1
    par
    Code :
    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 :
    SELECT cd_client FROM B.Table1
    cela fonctionne.

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

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

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

    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.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •