我有一个带有记录和表类型声明的包规范,如下所示:
CREATE OR REPLACE PACKAGE PCF_USER.PC_PATIO_PLACA_LTQ2 AS
TYPE TY_RECORD_PRODUTO IS RECORD (
CD_PRODUTO PCF_USER.TB_PRODUTOS.CD_PRODUTO%TYPE,
CD_PRODUTO_ORIGEM PCF_USER.TB_PRODUTOS.CD_PRODUTO%TYPE,
CD_EQUIPAMENTO PCF_USER.TB_EQUIPAMENTOS.CD_EQUIPAEMTNO%TYPE,
CD_EQUIPAMENTO_ORIGEM PCF_USER.TB_EQUIPAMENTOS.CD_EQUIPAEMTNO%TYPE
);
TYPE TY_TB_PRODUTO_AUX IS TABLE OF TY_RECORD_PRODUTO
INDEX BY BINARY_INTEGER;
PROCEDURE SP_IN_TRACKING;
END PC_PATIO_PLACA_LTQ2;
包装体就像这样:
CREATE OR REPLACE PACKAGE BODY PCF_USER.PC_PATIO_PLACA_LTQ2 AS
PROCEDURE SP_IN_TRACKING IS
vTb_Produto_Aux PCF_USER.PC_PATIO_PLACA_LTQ2.TY_TB_PRODUTO_AUX;
BEGIN
-- insere na tabela auxiliar
INSERT INTO vTb_Produto_Aux (
CD_PRODUTO,
CD_PRODUTO_ORIGEM,
CD_EQUIPAMENTO,
CD_EQUIPAMENTO_ORIGEM)
SELECT DISTINCT
T.ID_SLAB,
T.CD_HEAT,
'PATIO_PLACA_LTQ2',
'FORNECEDOR'
FROM PCF_USER.TB_PATIO_PLACA_LTQ2_TEMP T;
END;
END PC_PATIO_PLACA_LTQ2;
我需要从select子句中将值插入 vTb_Produto_Aux 表变量。
编译包体时出现此错误:
[错误] ORA-00942(25:17):PL / SQL:ORA-00942:tabela ouviewnão existe
这段代码有什么问题? vTb_Produto_Aux 已经宣布...
答案 0 :(得分:1)
我们不能INSERT INTO
Oracle中的集合,您可以使用BULK COLLECT INTO
SELECT DISTINCT
T.ID_SLAB
,T.CD_HEAT
,'PATIO_PLACA_LTQ2'
,'FORNECEDOR'
BULK COLLECT
INTO vTb_Produto_Aux
FROM PCF_USER.TB_PATIO_PLACA_LTQ2_TEMP T