【问题标题】:PLSQL table variable in packages包中的 PLSQL 表变量
【发布时间】:2018-05-16 15:26:30
【问题描述】:

我有一个包含如下记录和表类型声明的包规范:

 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: a tabela ou view não 存在

这段代码有什么问题? vTb_Produto_Aux 已经声明...

【问题讨论】:

  • 你不能这样做,如果你想存储输出 SELECT 那么你必须使用 BULK COLLECT

标签: oracle plsql


【解决方案1】:

我们不能在 Oracle 中使用INSERT INTO 集合,您可以使用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

【讨论】:

    猜你喜欢
    • 2013-09-25
    • 1970-01-01
    • 1970-01-01
    • 2012-09-09
    • 1970-01-01
    • 1970-01-01
    • 2021-11-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多