Табличная переменная PLSQL в пакетах - PullRequest
0 голосов
/ 16 мая 2018

У меня есть спецификация пакета с объявлением типов записей и таблиц следующим образом:

 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;


Мне нужно вставить значения в vTb_Produto_Aux табличную переменную из предложения select.

Я получаю эту ошибку при компиляции тела пакета:

[Ошибка] ORA-00942 (25: 17): PL / SQL: ORA-00942: просмотр таблицы отсутствует Existe

Что не так с этим кодом? vTb_Produto_Aux уже объявлено ...

1 Ответ

0 голосов
/ 16 мая 2018

Мы не можем 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...