我有一个执行某些连接的存储过程等。要为returnset中的字段返回某个值,我有另一个存储过程,我调用它。但是,其中一个参数需要是为原始结果集中的另一个字段返回的计算值(如果有意义的话),例如
SELECT @S = (CONVERT (NVARCHAR (50), DateDiff(minute, CONVERT (CHAR (24), [PI9_StartDT],
108), CONVERT (CHAR (24), [PI9_EndDT], 108)) / 60)) + ' ' + 'Hrs' + ' ' +
SUBSTRING(CONVERT (NVARCHAR (50), (DateDiff(minute, CONVERT (CHAR (24), [PI9_StartDT],
108), CONVERT (CHAR (24), [PI9_EndDT], 108)))), CHARINDEX('.', CONVERT (NVARCHAR (50),
(DateDiff(minute, CONVERT (CHAR (24), [PI9_StartDT], 108), CONVERT (CHAR (24),
[PI9_EndDT], 108)) / 60)), 2), 3) + ' ' + 'mins'
exec @OUT = [MUJV].[FailPassPI9] GarrisonName, @S, SCPCategory, @S
我需要将该计算值作为存储过程参数传递,如上所述。
然而,这不起作用。我想要做的是将@S(该sum用于返回结果集中的字段)作为参数存储到我的存储过程中。如您所见,它非常复杂。
我能做些什么来实现这个目标?
答案 0 :(得分:0)
您的变量似乎得到了错误的结果。以下是您可以考虑的两个示例,以获得更好的性能和可读性:
DECLARE @PI9_StartDT datetime = getdate()
DECLARE @s varchar(max)
SELECT @S = cast(datepart(hh, @PI9_StartDT) as varchar(2)) + ' Hrs ' +
cast(datepart(mi, @PI9_StartDT) as varchar(2)) + ' mins'
SELECT @s = stuff(convert(varchar(5), getdate(), 108), 3, 1, ' hrs ') + ' mins'
我不会试图猜测你的脚本失败的原因和方式,我不能根据当前的信息。