requete incluant des procédures stockées ???

requete incluant des procédures stockées ??? - SQL/NoSQL - Programmation

Marsh Posté le 20-01-2005 à 10:20:41    

bonjour j'ai plusieurs procédures stockées qui se nomment proc1, proc2 etc... dans sql server
pour les utiliser, j'utilise l'analyseur de requete en faisant: exec proc1 etc....
j'obtient des enregistrements mais je ne sais pas comment faire pour les utiliser ces derniers dans d'autres applications.
 
exemple:
r=exec proc1
select r from affaires,affairesent where affaires.num=affairesent.num
 
le problème c'est que r=exec proc1 n'existe pas et je ne sais pas comment faire pour lancer des requetes incluant des procédures stockées.
merci d'avance.

Reply

Marsh Posté le 20-01-2005 à 10:20:41   

Reply

Marsh Posté le 20-01-2005 à 10:28:29    

Je ne sais pas si c'est possible de lancer une procédure directement ds une requête ...

Reply

Marsh Posté le 20-01-2005 à 10:37:29    

si ce n'est pas possible, existe t-il des solutions ?

Reply

Marsh Posté le 20-01-2005 à 12:38:25    

Cà dépend de la complexité de tes procédures ; si elles font de simples SELECT, tu peux les remplacer par des vues ...

Reply

Marsh Posté le 20-01-2005 à 13:26:32    

je n'utilise pas les vues car je passe des paramètres dans les procédures stockées.

Reply

Marsh Posté le 21-01-2005 à 12:18:47    

elle fait quoi ta ps ?
 
utilise plutôt des fonctions (même syntaxe ou presque sauf que tu peux faire :
 
select mafonction1(champ1) from mafonction(2) where champ2 = mafonction3(champ3)
 
Genre.
C'est infiniment plus facile à utiliser.
 
Je rappelle les rudiments de l'algo :
 
UNE PROCEDURE FAIT QUELQUECHOSE, ET NE RETOURNE RIEN.
 
UNE FONCTION VAUT QUELQUECHOSE, ET NE FAIT RIEN.

Reply

Marsh Posté le 21-01-2005 à 12:23:00    

create function truc(@bidule as number)
returns table
as
begin
   return (select * from matable where champ = @bidule)
end
 
 
select * from truc(5)
=> Retourne toutes les lignes de matable où champ = 5
 
 
create function truc2(@bidule as number)
returns number
as
begin
   declare @nb as number
   select @nb = count(*) from matable where champ = @bidule
   return @nb
end
 
select truc2(5)
=> Retourn le nombre de lignes de matable où champ = 5
 
Tu peux parfaitement combiner :
 
select truc2(10), champ2 from truc(5)
=> Retourne champ2 pour toutes les lignes de matable où champ = 5, et préfixe le résultat par le nombre de lignes où champ = 10

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed