我正在使用存储过程,该存储过程使用现有过程的输出来处理公式并计算结果。我正在使用临时表存储外部程序的结果,以便在公式中使用,但我很难按照我想要的方式工作。
我没有能力改变我正在使用的现有程序。
以下是我想要实现的简化示例:
ALTER PROCEDURE dbo.GET_CUBIC_VOLUME,
@MYITEM varchar(25) = null,
@MY_RESULT decimal(38,2) OUTPUT
AS
SET NOCOUNT ON
DECLARE @MY_HEIGHT decimal(38,2)
DECLARE @MY_WIDTH decimal(38,2)
DECLARE @MY_DEPTH decimal(38,2)
CREATE TABLE #MYVARS (V_NAME varchar(max),V_VAL money)
INSERT INTO #MYVARS (V_NAME,V_VAL) values ('HEIGHT', EXEC GET_ITEM_HEIGHT @MYITEM)
INSERT INTO #MYVARS (V_NAME,V_VAL) values ('WIDTH', EXEC GET_ITEM_WIDTH @MYITEM)
INSERT INTO #MYVARS (V_NAME,V_VAL) values ('DEPTH', EXEC GET_ITEM_DEPTH @MYITEM)
SET @MY_HEIGHT = (SELECT V_VAL from #MYVARS where V_NAME='HEIGHT')
SET @MY_WIDTH = (SELECT V_VAL from #MYVARS where V_NAME='WIDTH')
SET @MY_DEPTH = (SELECT V_VAL from #MYVARS where V_NAME='DEPTH')
SET @MY_RESULT = @MY_HEIGHT * @MY_WIDTH * @MY_DEPTH
SELECT @MY_RESULT
RETURN
我遇到的问题是使用字符串插入临时表来说明它是什么,以及相应存储过程的结果。
如何在不改变现有程序的情况下实现这一目标,或者必须为每个变量创建临时表,那将是非常棒的。
由于
答案 0 :(得分:0)
声明变量后..
set @MY_HEIGHT = EXEC GET_ITEM_HEIGHT @MYITEM
set @MY_WIDTH = EXEC GET_ITEM_WIDTH @MYITEM
set @MY_DEPTH = EXEC GET_ITEM_DEPTH @MYITEM
然后将插入更改为..
INSERT INTO #MYVARS (V_NAME,V_VAL) values ('HEIGHT', @MY_HEIGHT)
INSERT INTO #MYVARS (V_NAME,V_VAL) values ('WIDTH', @MY_WIDTH)
INSERT INTO #MYVARS (V_NAME,V_VAL) values ('DEPTH', @MY_DEPTH)
不确定你现在甚至需要插入myvars temp。