Инициализируйте переменные из результатов хранимой процедуры - PullRequest
0 голосов
/ 23 февраля 2009

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

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

Пример:
- Этот sp выйдет и получит minlat, maxlat, minlong, maxlong на основе почтового индекса.

EXEC SERVER.DATABASE.dbo.GetLatLongApprox @Zip

- Затем я объявляю переменные, которые буду использовать в службах отчетности.

DECLARE @MaxLat AS float
DECLARE @MinLat AS float
DECLARE @MaxLong AS float
DECLARE @MinLong AS float

- Теперь я хочу динамически установить базу значений на основе результатов первой хранимой процедуры.

SET @MaxLat = ?
SET @MinLat = ?
SET @MaxLong = ?
SET @MinLong = ?

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

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

Ответы [ 4 ]

2 голосов
/ 23 февраля 2009

поиск выходных параметров в Books On Line

вот пример

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 голос
/ 23 февраля 2009

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

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

1 голос
/ 23 февраля 2009

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

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

ВЫБЕРИТЕ @MaxLong как N '@ MaxLong' ... ВЫБЕРИТЕ @MinLong как N '@ MinLong'

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

0 голосов
/ 23 февраля 2009

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...