从临时表中的存储过程中插入结果以及其他数据

时间:2015-11-25 20:23:43

标签: sql stored-procedures

我正在使用存储过程,该存储过程使用现有过程的输出来处理公式并计算结果。我正在使用临时表存储外部程序的结果,以便在公式中使用,但我很难按照我想要的方式工作。

我没有能力改变我正在使用的现有程序。

以下是我想要实现的简化示例:

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

我遇到的问题是使用字符串插入临时表来说明它是什么,以及相应存储过程的结果。

如何在不改变现有程序的情况下实现这一目标,或者必须为每个变量创建临时表,那将是非常棒的。

由于

1 个答案:

答案 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。