0

我在 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 = ?

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

任何帮助是极大的赞赏。

4

4 回答 4

2

在 Books On Line 中查找 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
于 2009-02-23T16:59:31.967 回答
1

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

EXEC SERVER.DATABASE.dbo.GetLatLongApprox @Zip,@MaxLong 输出,...,@MinLong 输出

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

那是你要找的吗?

于 2009-02-23T16:58:01.393 回答
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

于 2009-02-23T17:01:05.553 回答
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

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

于 2009-02-23T17:05:52.997 回答