Oracle SQL Developer - 表达式类型错误

时间:2014-01-18 14:37:20

标签: oracle plsql

所以我关注这个guide以避免突变错误,因为我曾经查询触发触发器的表,但显然不起作用。所以我按照指南明确说明创建了这个包。

CREATE OR REPLACE PACKAGE NOVOANOLECTIVO
AS

  TYPE ANOARRAY IS TABLE OF ROWID INDEX BY BINARY_INTEGER;
  NOVOSTUPLOS ANOARRAY;
  VAZIO ANOARRAY;

END;

以下触发器无法编译,因为它表示“表达式类型错误”。但我只是按照指南,所以似乎是什么问题?

CREATE OR REPLACE TRIGGER T_AFTERANO 
AFTER INSERT OR UPDATE ON ANOLECTIVO
FOR EACH ROW

DECLARE

POSICAO INTEGER;

BEGIN
--APANHAR O CODIGO DOS NOVOS TUPLOS
  POSICAO := NOVOANOLECTIVO.NOVOSTUPLOS.COUNT + 1;

   NOVOANOLECTIVO.NOVOSTUPLOS(POSICAO) := :NEW.CODIGO;

END;

1 个答案:

答案 0 :(得分:1)

正如您在评论中所说,错误出现在此行NOVOANOLECTIVO.NOVOSTUPLOS(POSICAO) := :NEW.CODIGO;上,这意味着错误是因为您将:new.codigo放在NOVOSTUPLOS(POSICAO) ROWID上,这是一个:new.codigo表1}}类型和ROWID应该是{{1}}的相同类型(不管是什么,我只是在查询中知道它。)但事实并非如此。