Précédent   Forum du club des développeurs et IT Pro > Bases de données > Sybase
Sybase Forum sur la base de données Sybase. Avant de poster -> F.A.Q Sybase, Tutoriels Sybase
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 17/12/2012, 13h27   #1
kerido
Invité régulier
 
Inscription : novembre 2003
Messages : 22
Détails du profil
Informations forums :
Inscription : novembre 2003
Messages : 22
Points : 8
Points : 8
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
kerido est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/01/2013, 20h31   #2
semaphore1984
Membre actif
 
Inscription : décembre 2008
Messages : 128
Détails du profil
Informations forums :
Inscription : décembre 2008
Messages : 128
Points : 186
Points : 186
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
semaphore1984 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 13h10.


 
 
 
 
Partenaires

Hébergement Web