Проблема: обе хранимые процедуры возвращают значение int, но сумма обоих значений int возвращает значение по умолчанию 0
Я видел различные решения с помощью выбора, который работает, или использовать временную таблицу без проблем, но мне нужнохранить результаты отдельно и затем суммировать их в конце (позволяя sp быть модульными). какие-либо идеи, поддерживающие совместимость с 2008?
Основная идея - иметь родительский sp с общим результатом и несколько модульных потомков.Каждый из sp является своим собственным результатом, который будет использоваться родителем.
Как назначить результат exec переменной sql?
declare @Result1 int = 0,
@Result2 int = 0,
@Total int = 0,
@projectID int,
@periodID int
exec @Result1 = [dbo].[QSP_getCount1] @projectID = 1,
@periodID = 12
exec @Result2= [dbo].[QSP_getCount2] @projectID = 1,
@periodID = 12
set @Total = @Result1 + @Result2
select @Total
Хранимый процесс - обаидентичны просто использовать таблицы сравнения (возвращаемые значения 1, 15)
if OBJECT_ID('dbo.QSP_getCount1', 'P') is not null
drop procedure [dbo].[QSP_getCount1]
go
create procedure [dbo].[QSP_getCount1] @projectID int,
@periodID int
as
declare @NullTotal int = 0;
select @NullTotal = case when col1 is not null then @NullTotal + 1 else @NullTotal end,
@NullTotal = case when col2 is not null then @NullTotal + 1 else @NullTotal end,
@NullTotal = case when col3 is not null then @NullTotal + 1 else @NullTotal end,
@NullTotal = case when col4 is not null then @NullTotal + 1 else @NullTotal end,
@NullTotal = case when col5 is not null then @NullTotal + 1 else @NullTotal end
from tablename
where projectID = 1005 and periodID = 210
select @NullTotal