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

SQL Oracle Discussion :

[Debutant] Comment bien remplir mon curseur de sortie dans une PS ?


Sujet :

SQL Oracle

  1. #1
    Membre régulier Avatar de souch
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2003
    Messages : 145
    Points : 124
    Points
    124
    Par défaut [Debutant] Comment bien remplir mon curseur de sortie dans une PS ?
    Salut à tous,

    je tente de convertir mes procédures stockées FireBird dans leur équivalent Oracle 10g, c'est pas de la tarte ^^

    Après moult recherches, j'ai un souci important que je ne parviens pas à résoudre de manière propre ...

    Sous fireBird, les PS pouvaient être utilisés directement comme des tables virtuelles, en renvoyant directement les lignes après les suspends,
    sous oracle je doit passer par les Cursor, pas de souci pour les procédures simples, mais lorsque je doit filtre plus profondément le contenu retourné par mon curseur de ref, la je cale ...

    Voici la procédure (non fonctionnelle) :

    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
    CREATE OR REPLACE
    PROCEDURE LIST_SEUIL
    ( INMODE IN NUMBER,
      rc out Pkg_Reference.MRefCursor
    ) AS
     
      VCNT Integer;
     
      cursor A_CUR is SELECT 
        LOCALID,QMIN,NOM,DESCR,QMAX,IDTYPE,IDSOUSTYPE,CoalEsce(MOD_FOU_IID,FOU_IID) as FOUID,REF 
        FROM j_catalogue WHERE QMIN>0 and QMIN is not null;
      A_LIGNE A_CUR%ROWTYPE;
     
    BEGIN
     
      OPEN A_CUR;
      LOOP
        FETCH A_CUR into A_Ligne;
        EXIT WHEN A_CUR%NOTFOUND; 
     
        TOTAL := 0;
     
        select count(*) into TOTAL from j_stock J where J.CAT_IID=LOCALID and J.date_out is null;
     
        if (INMODE=0) then 
          if (TOTAL<QMIN) then 
            --suspend; // selon les params et les résultats, je renvoi ou non l'enregistrement
            -- ici j'aimerais passer mon A_Ligne dans le curseur RC de sortie...
          end if;
        end if;
     
        if (INMODE=1) then
          if ((TOTAL + (TOTAL * / 10)) < QMIN) then   
            --suspend; // selon les params et les résultats, je renvoi ou non l'enregistrement
          end if;
        end if;
     
        if (INMODE=2) then
          if (TOTAL>QMAX) then
            --suspend; // selon les params et les résultats, je renvoi ou non l'enregistrement
          end if;
        end if;      
     
      END LOOP;
      CLOSE A_CUR;
     
      -- open rc for select ...;
     
    END LIST_SEUIL;
    Faire l'ensemble des tests directement dans la requête sql ne me parait pas être la bonne solution, et se serait inapplicable pour d'autres procédures + complexes. Créer une table temporaire me parait un process énorme pour peut de chose ...

    Une idée ?

    Merci
    D7/2007 - Asphyre 4.1

  2. #2
    Membre expert

    Profil pro
    Inscrit en
    Février 2006
    Messages
    3 437
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 3 437
    Points : 3 597
    Points
    3 597
    Par défaut
    Peut-être qu'une fonction pipeline peut vous aider ???
    Voir un exemple dans le Application Developer's Guide - Fundamental.

  3. #3
    Membre régulier Avatar de souch
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2003
    Messages : 145
    Points : 124
    Points
    124
    Par défaut
    Salut, et merci pour ta réponse,
    je vais essayer dans cette voie des demain (ca a pas l'air simple simple ^^)
    bye!
    D7/2007 - Asphyre 4.1

  4. #4
    Membre régulier Avatar de souch
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2003
    Messages : 145
    Points : 124
    Points
    124
    Par défaut
    Ca marche impec, Merci
    D7/2007 - Asphyre 4.1

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

Discussions similaires

  1. Comment bien référencer mon site ?
    Par LaJess dans le forum Référencement
    Réponses: 2
    Dernier message: 05/03/2010, 20h46
  2. Comment bien configurer mon jboss.xml
    Par tresorkoul dans le forum Wildfly/JBoss
    Réponses: 5
    Dernier message: 24/08/2009, 13h59
  3. [Debutant] comment bien faire une variable ?
    Par nighthammer dans le forum iReport
    Réponses: 2
    Dernier message: 27/05/2008, 11h56
  4. Réponses: 9
    Dernier message: 10/01/2007, 09h04
  5. [Débutant]Comment bien débuter en java
    Par ETI-trian dans le forum Général Java
    Réponses: 17
    Dernier message: 21/11/2005, 12h01

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