Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle SQL Developer-表达式的类型错误_Oracle_Plsql - Fatal编程技术网

Oracle SQL Developer-表达式的类型错误

Oracle SQL Developer-表达式的类型错误,oracle,plsql,Oracle,Plsql,因此,我遵循这一点是为了避免突变错误,因为我曾经查询触发触发器的表,但这显然不起作用。因此,我创建了这个包,正如指南明确指出的那样 CREATE OR REPLACE PACKAGE NOVOANOLECTIVO AS TYPE ANOARRAY IS TABLE OF ROWID INDEX BY BINARY_INTEGER; NOVOSTUPLOS ANOARRAY; VAZIO ANOARRAY; END; 下面的触发器没有编译,因为它说“表达式的类型错误”。但我只是在

因此,我遵循这一点是为了避免突变错误,因为我曾经查询触发触发器的表,但这显然不起作用。因此,我创建了这个包,正如指南明确指出的那样

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;

正如您在评论中所说,错误在这一行
novoanoloctivo.NOVOSTUPLOS(POSICAO):=:NEW.CODIGO
这意味着错误是因为您将
:new.codigo
放在
NOVOSTUPLOS(POSICAO)
上,这是一个
ROWID
类型的表,而
:new.codigo
应该是与
ROWID
相同的类型(不管这是什么,我只是在查询中知道的)但是它不是。

对于start
NOVOSTUPLOS
没有在任何地方初始化。这就是错误的原因吗?我不能说,因为您没有说代码上发生错误的行在哪里。但是它可以
novonovolectivo.NOVOSTUPLOS(POSICAO):=:NEW.CODIGO。这是一行。所以错误是因为您将
:new.codigo
放在NOVOSTUPLOS(POSICAO)上,这是一个ROWID表。这意味着:new.codigo必须是相同类型的ROWID(无论这是什么,我只在查询中知道)。但它不是