我在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说话。
非常感谢任何帮助。
答案 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
然后将这些作为参数传递到报告服务存储过程中,如果我已正确理解您并且您在一个存储过程中执行此操作。