从存储过程结果初始化变量

时间:2009-02-23 16:53:50

标签: sql variables initialization

我在SQL中仍然相当环保,我有一个问题。

我正在使用基于lat / long查找帐户的报告服务创建查找。我的问题是如何从存储过程中获取结果以初始化以下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 = ?

这将全部驻留在我将用于报告服务的一个存储过程中。希望这是有道理的。再一次,我是绿色的,并且还没有让sql说话。

非常感谢任何帮助。

4 个答案:

答案 0 :(得分:2)

在联机丛书中查找OUTPUT参数

这是一个例子

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 :(得分:1)

我认为您可以使用OUTPUT参数。

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

将@MaxLong选为N'@ MaxLong' ... 选择@MinLong为N'@ MinLong'

你在找什么?

答案 2 :(得分: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

答案 3 :(得分: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

然后将这些作为参数传递到报告服务存储过程中,如果我已正确理解您并且您在一个存储过程中执行此操作。