【发布时间】:2019-01-06 17:20:10
【问题描述】:
我有多个 stored procedures 返回一个值。我想创建另一个stored procedure,它将运行所有现有的SPs,并将返回的值存储在temp table中:
CREATE TABLE #temptbl(metricid int, value float, normalizedvalue int)
metricid 将是静态的,例如 SP_CalcMetric1 将是 1 等。
value 将是每个SP 的返回结果
normalizedvalue 将是每个SP 的返回结果的归一化值,例如SP_CalcMetric1 将被归一化
if (value < 5)
normalizedvalue = 100;
else if (value >= 5 && value < 10)
normalizedvalue = 50;
else
normalizedvalue = 0;
每个SP 结果都有不同的归一化方法。
问题是我如何编写insert statement 来组合静态int、存储过程的值和规范化值(从规范化方法计算)
【问题讨论】:
-
不清楚你遇到了什么问题。捕获每个 SP 的返回值? (
EXEC @retval = SP_CalcMetric1 ...) 编写INSERT语句?将您的伪代码翻译成 T-SQL?为可变数量的程序执行此操作? -
您的问题到底是什么?你似乎没有问过。
-
请检查已编辑的问题
-
你有多少个像
SP_CalcMetric1这样的存储过程? -
你有没有可能只拥有
CalcMetric,采用@metricid参数?这至少会使您的外部逻辑更加健壮,否则您将需要动态 SQL。 (但如果这些过程中的每一个都有完全不同的逻辑,那么它并没有太大帮助,因为它只是将复杂性转移到必须为CASE或IF的存储过程。)(另外,don't use thesp_prefix for user stored procedures,它是保留和对性能不利。)
标签: sql-server stored-procedures sql-server-2012 temp-tables