Понимание скалярных переменных - PullRequest
0 голосов
/ 30 апреля 2018

Я унаследовал отчет 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. 

Затем у меня есть другой скрипт, который запускается по принципу adhoc, и в этой части мне нужна помощь:

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

Как это работает?

В моей хранимой процедуре определены @FromPeriod и @ToPeriod, но при использовании сценария adhoc вместо нее передается @PriorPeriod. Это работает отлично, но я не понимаю, как / почему это работает.

Любые жемчужины мудрости будут оценены.

Спасибо

1 Ответ

0 голосов
/ 30 апреля 2018

Ваша хранимая процедура "[dbo]. [_ SP_STOREDPROCEDURE]" просто применяет одно и то же значение к обоим параметрам.

Ваши параметры:

    @FromPeriod int, @ToPeriod Int

Вы вызываете с помощью:

    exec [_SP_STOREDPROCEDURE] @PriorPeriod, @PriorPeriod

Предполагая, что @PriorPeriod = 5, это то же самое, что и:

    exec [_SP_STOREDPROCEDURE] 5, 5.

Теперь @FromPeriod содержит 5. И @ToPeriod / также / содержит 5.

Но вы не дали нам достаточно кода из _SP_STOREDPROCEDURE, чтобы объяснить, почему, по вашему мнению, это работает отлично. Но я предполагаю, что ответ находится в предложении WHERE в вашей хранимой процедуре.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...