【发布时间】:2015-11-25 20:23:42
【问题描述】:
我正在使用一个存储过程,它使用现有过程的输出来处理公式并计算结果。我正在使用一个临时表来存储来自外部过程的结果以在公式中使用,但是很难让它按照我想要的方式工作。
我没有能力改变我正在使用的现有程序。
这是我想要实现的简化示例:
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
我遇到的问题是使用字符串插入临时表以说明它是什么,以及相应存储过程的结果。
任何关于如何在不更改现有过程或不必为每个变量创建临时表的情况下实现此目的的见解都会很棒。
谢谢
【问题讨论】:
-
请标记使用的 dbms。 (这看起来不像 ANSI SQL...)
-
什么错误? #MYVARS 中是否插入了任何内容?
-
@tshoemake 错误是“____ 附近的语法不正确”,空白为“高度”或我试图放入表中的任何内容。当我省略 V_NAME 的字符串时,它将使该字段为空并记录 V_VAL 的辅助过程的输出。我只是不知道如何让两者一起工作。
标签: sql stored-procedures