Sql 理解标量变量

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

我继承了一个SSRS报告,我需要一些帮助来理解标量变量是如何工作的,因为我不明白

存储过程如下所示开始,使用
@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子句中。

存储过程在内部使用这些参数,只要传递正确的值(不管参数变量名是什么),它就不会抱怨,甚至可以传递常量值。