Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 2 sur 2
  1. #1
    Candidat au titre de Membre du Club
    Inscrit en
    novembre 2003
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : novembre 2003
    Messages : 33
    Points : 11
    Points
    11

    Par défaut appel sous procedure interne dans proc principale

    Bonjour,

    j'ai un procédure stockée SQL sybase qui contient un grand nombre de ligne set notamment d'important bloc de lignes encadrées par des if:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    IF (@a=1)
    begin 
      - nombreuses lignes 
    end
    else IF (@a=2)
    begin 
       - nombreuse lignes
    end
    Pour faciliter la relecture que pourront faire les copains ensuite, j'aurai voulu créer une fonction à l'intérieur de mon code du style

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    CREATE PROCEDURE psPrincipale
     
    PROCEDURE P_Sous_proc_appele_par_le_principale
    BEGIN
          action du style SELECT ...
     
     
    END P_Sous_proc_appele_par_le_principale;
    J'ai essayé mais ça ne compile pas

    si qqn a une idée ça serait super (de préférence sans passer par l'appel du autre PS extérieure avec exec pour éviter de mettre des paramètre d'entrée / sortie)


    merci d'avance

  2. #2
    Membre actif
    Inscrit en
    décembre 2008
    Messages
    128
    Détails du profil
    Informations forums :
    Inscription : décembre 2008
    Messages : 128
    Points : 186
    Points
    186

    Par défaut

    Bonjour,

    Je ne suis pas sûr d'avoir bien compris ton problème, mais si c'est de passer les paramètres à chaque procédure qui te pose pb, tu peux utiliser des variables de session.
    Ces variables sont par exemple créés dans la proc principale et pourront être lues dans les proc secondaires comme ceci proc princpale suivie d'une secondaire :
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    -- exemple proc principale
    CREATE procedure psPrincipale(@argun integer,@argdeux varchar(15),@argtrois varchar(15)) AS
    BEGIN
        -- Créer des variables de session pour les paramètres à "passer" aux sous procedures
        CREATE VARIABLE @vsession_argun INTEGER;
        CREATE VARIABLE @vsession_argdeux varchar(15);
        CREATE VARIABLE @vsession_argtrois varchar(15);
     
        -- Initialiser les variables de session avec les valeurs reçues pas la proc
        SET @vsession_argun = @argun;
        SET @vsession_argdeux = @argdeux;
        SET @vsession_argtrois = @argtrois;
    	-- appel de plusieurs proc (sans passer de paramètres)
    	exec sous_proc1;
    	exec sous_proc2;
    	-- .....
    	-- suppression des variables de session (c'est facultatif s'il n'y a pas d'autres appels dans la session)
        DROP VARIABLE @vsession_argun;
        DROP VARIABLE @vsession_argdeux;
        DROP VARIABLE @vsession_argtrois;
     
    END
    et la secondaire :
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    -- exemple de recup dans une sous proc
     CREATE procedure psSecondaire() AS
     BEGIN
       DECLARE @localun INTEGER;
      -- Tester si la variable de session existe
      IF VAREXISTS('@vsession_argun')
      THEN
        SET @localun = @vsession_argun;
      ELSE
    	SET @localun = 0 -- valeur défaut par exemple
      END IF;
      END
    Cordialement

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
  •