我需要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'
我看到了所有数据。
我是怎么了,伙计们?
答案 0 :(得分:0)
您可以尝试将列包含在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