2009-02-23 2 views
0

Я все еще довольно зеленый в SQL, и у меня есть вопрос.Инициализировать переменные из результатов хранимой процедуры

Я создаю поиск с использованием служб отчетов, которые находят учетную запись на основе lat/long. Мой вопрос в том, как я могу получить результаты из хранимой процедуры для инициализации переменных в следующем sp?

Пример: - Этот sp будет выходить и получать minlat, maxlat, minlong, maxlong на основе почтового индекса. EXEC SERVER.DATABASE.dbo.GetLatLongApprox @Zip

--Then Я объявляя переменные, которые я буду использовать в службах отчетов DECLARE @MaxLat AS флоат DECLARE @MinLat AS флоат DECLARE @MaxLong AS флоат DECLARE @MinLong AS float

- Теперь я хочу динамически установить базу значений по результатам первой хранимой процедуры. SET @MaxLat =? SET @MinLat =? SET @MaxLong =? SET @MinLong =?

Все это будет храниться в одной хранимой процедуре, которую я буду использовать в службах отчетности. Надеюсь, это имеет смысл. Опять же, я зелёный и не совсем понимаю, что sql говорит.

Любая помощь очень ценится.

ответ

1

Я думаю, что вы можете использовать параметры OUTPUT.

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

ВЫБРАТЬ @MaxLong, как N '@ MaxLong' ... SELECT, @MinLong как N» @MinLong '

Это то, что вы ищете?

2

параметры поиска ВЫХОДНЫЕ в книгах по линии

вот пример

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

Чтобы сделать эту работу вы должны использовать выходные параметры. Как это:

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 

Это легко и приятно: D

0

В хранимой процедуре

EXEC dbo.GetLatLongApprox @Zip 

вам просто нужно установить переменные против возвращенного результирующего т.е.

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

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

Затем передайте их как параметры в хранимую процедуру служб отчетов, если я понял, что вы прямо, и вы делаете это все внутри одной хранимой процедуры.

Смежные вопросы