2009-02-23 6 views
0

Je suis encore assez vert en SQL et j'ai une question.Initialiser les variables à partir des résultats de la procédure stockée

Je crée une recherche à l'aide de services de génération de rapports qui trouvent un compte basé sur lat/long. Ma question est comment puis-je obtenir des résultats d'une procédure stockée pour initialiser des variables dans le sp suivant?

Exemple: --Ce SP va sortir et obtenir le minlat, maxlat, minlong, maxlong basé sur le code postal. EXEC SERVER.DATABASE.dbo.GetLatLongApprox @Zip

--Then Je déclare les variables que j'utiliser dans les services d'information @MaxLat DECLARE AS flotteur @MinLat DECLARE AS flotteur @MaxLong DECLARE AS flotteur DECLARE @MinLong AS float

--Maintenant je veux définir dynamiquement la base de valeurs sur les résultats de la première procédure stockée. SET @MaxLat =? SET @MinLat =? SET @MaxLong =? SET @MinLong =?

Tout cela résidera dans une procédure stockée que je vais utiliser dans les services de reporting. J'espère que cela a du sens. Encore une fois, je suis vert et je n'ai pas encore vraiment parlé du sql.

Toute aide est grandement appréciée.

Répondre

1

Je pense que vous pouvez utiliser les paramètres OUTPUT dans cela.

EXEC SERVER.DATABASE.dbo.GetLatLongApprox @Zip, SORTIE @MaxLong, ..., @MinLong SORTIE

SELECT @MaxLong comme N '@ MaxLong' ... SELECT @MinLong comme N » @MinLong '

Est-ce ce que vous cherchez?

2

paramètres recherche OUTPUT en Livres en ligne

ici est un exemple

CREATE PROCEDURE TestProc 
     @employeeID INT, 
     @managerID INT OUTPUT 
    AS 
    BEGIN 
     SELECT @managerID =2 

    END 
    Go 


    declare @employeeID int, @managerID int 
    select @employeeID = 1 


    exec TestProc @employeeID,@managerID output 

    select @employeeID,@managerID 
1

Pour faire ce travail, vous devez utiliser les paramètres de sortie. Comme ceci:

CREATE PROCEDURE XPTO_Procedure 

@intInput int, 
@intOutput int OUTPUT 

AS 
set @intOutput = @intInput + 1 

go 

Call it like this: 

declare @intResult int 
exec _4P_test 3 ,@intResult OUT 
select @intResult 

Il est agréable et facile: D

0

Dans votre procédure stockée

EXEC dbo.GetLatLongApprox @Zip 

il vous suffit de définir les variables contre les résultats retourné à savoir

SELECT 
@MinLat = min_lat, 
@MaxLat = max_lat, 
@MinLong = min_long, 
@MaxLong = max_long 
FROM 
my_resultset 

EXEC dbo.MyReportingServiceStoredProcedure @MinLat, @MaxLat, @MinLong, @MaxLong 

Ensuite, transmettez-les en tant que paramètres dans la procédure stockée des services de reporting, si je vous ai bien compris. rectly et vous faites cela tout à l'intérieur d'une procédure stockée.

Questions connexes