Sql 理解标量变量
我继承了一个SSRS报告,我需要一些帮助来理解标量变量是如何工作的,因为我不明白 存储过程如下所示开始,使用Sql 理解标量变量,sql,stored-procedures,Sql,Stored Procedures,我继承了一个SSRS报告,我需要一些帮助来理解标量变量是如何工作的,因为我不明白 存储过程如下所示开始,使用@FromPeriod和@ToPeriod运行存储过程没有问题 CREATE PROCEDURE [dbo].[_SP_STOREDPROCEDURE] (@FromPeriod int, @ToPeriod Int) AS set nocount on declare @v_FromPeriod int declare @v_ToPeriod in
@FromPeriod
和@ToPeriod
运行存储过程没有问题
CREATE PROCEDURE [dbo].[_SP_STOREDPROCEDURE]
(@FromPeriod int, @ToPeriod Int)
AS
set nocount on
declare @v_FromPeriod int
declare @v_ToPeriod int
declare @cnt int, @periods int
declare @v_periodbegindate datetime
declare @v_YearBegindate datetime
ETC. ETC.
接下来,我有另一个临时运行的脚本,这是我需要帮助的部分:
declare @Period int
declare @PriorPeriod int
select @period = cur_per from tbm_Parms
if right(@Period, 2) <> '01'
begin
set @PriorPeriod = @Period - 1
end
exec [_SP_STOREDPROCEDURE] @PriorPeriod, @PriorPeriod
declare@Period int
声明@PriorPeriod int
从tbm参数中选择@period=cur\u per
如果正确(@Period,2)'01'
开始
设置@PriorPeriod=@Period-1
结束
exec[\u SP\u StoredProcess]@PriorPeriod,@PriorPeriod
这是怎么回事
我的存储过程定义了@FromPeriod
和@ToPeriod
,但它使用的是临时脚本,它传递的是@PriorPeriod
。它工作得很好,但我不明白它是怎么工作的
任何智慧的珍珠都会被欣赏
谢谢您的存储过程“[dbo].[u SP\u STOREDPROCEDURE]”只是将相同的值应用于这两个参数
您的参数是:
@FromPeriod int, @ToPeriod Int
您可以通过以下方式调用:
exec [_SP_STOREDPROCEDURE] @PriorPeriod, @PriorPeriod
假设@PriorPeriod=5,这与:
exec [_SP_STOREDPROCEDURE] 5, 5.
现在@FromPeriod包含5个。和@ToPeriod/也/包含5
但是你没有从_SP_STOREDPROCEDURE中给我们足够的代码来解释为什么,根据你的说法,这是完美的。但我猜答案在存储过程中的WHERE子句中。存储过程在内部使用这些参数,只要传递正确的值(不管参数变量名是什么),它就不会抱怨,甚至可以传递常量值。