sql-server - 插入 - 执行问题。存储过程的空输出
问题描述
我需要SELECT
存储过程输出中的特定数据,因此我试图将存储过程的输出插入表中。我是 SQL 的新手。
所以这里是代码:
Declare @result table
(
row_id int,
quarry nvarchar(400),
interval nvarchar(100),
vskr_plan decimal(30,1),
vskr_fact decimal(30,1),
vskr_diff decimal(30,1),
ruda_plan decimal(30,1),
ruda_fact decimal(30,1),
ruda_diff decimal(30,1),
gpr_plan decimal(30,1),
gpr_fact decimal(30,1),
gpr_diff decimal(30,1),
gm_plan decimal(30,1),
gm_fact decimal(30,1),
gm_diff decimal(30,1)
)
INSERT INTO @result
EXEC [report].[DISP_KPI_QUARRY] @datet = N'2018-10-11'
SELECT *
FROM @result
我对这段代码没有错误,但它返回一个空表!
但是,如果我执行:
EXEC [report].[DISP_KPI_QUARRY] @datet = N'2018-10-11'
我看到了所有的数据。
伙计们,我的错误是什么?
解决方案
您可以尝试以INSERT
与从存储过程返回的顺序相同的顺序将列包含在语句中。当您从存储过程插入结果时,您需要确保该存储过程返回的列的计数、数据类型和顺序与您的@result
表定义相匹配。
DECLARE @result table
(
row_id int,
quarry nvarchar(400),
interval nvarchar(100),
vskr_plan decimal(30,1),
vskr_fact decimal(30,1),
vskr_diff decimal(30,1),
ruda_plan decimal(30,1),
ruda_fact decimal(30,1),
ruda_diff decimal(30,1),
gpr_plan decimal(30,1),
gpr_fact decimal(30,1),
gpr_diff decimal(30,1),
gm_plan decimal(30,1),
gm_fact decimal(30,1),
gm_diff decimal(30,1)
)
INSERT INTO @result (row_id, quarry, interval, vskr_plan, vskr_fact, vskr_diff, ruda_plan, ruda_fact, ruda_diff, gpr_plan, gpr_fact, gpr_diff, gm_plan, gm_fact, gm_diff)
EXEC [report].[DISP_KPI_QUARRY] @datet = N'2018-10-11'
SELECT *
FROM @result
推荐阅读
- c++ - 如何在二维中使用 memset 在 C++ 中动态生成数组?
- karate - 空手道中的数据库代理
- go - 如何使用 AWS lambda 函数获取 URL 参数?
- r - R 中的相关矩阵相关性显示为“?” 在网格中
- scala - 通过父类型获取类型类实例
- python - 如何使用 sklearn(卡方或方差分析)去除冗余特征
- coldfusion - 如何从应用程序 cfc 文件中引用第二个数据库
- python - 在sql的两个查询中使用格式
- python - 如何在 OpenCv 中使用单应矩阵拼接两个图像?
- javascript - React-Router useHistory 抛出 TypeError