Oracle
 sql >> Base de données >  >> RDS >> Oracle

SCOPE pour un tableau de REF

Vous souhaitez ajouter la portée au COLUMN_VALUE pseudo-colonne du tableau imbriqué :

ALTER TABLE cyclers_tab ADD SCOPE FOR ( COLUMN_VALUE ) IS cycler;

Si vous faites alors :

INSERT INTO cycler ( name ) VALUES ( 'c1.1' );
INSERT INTO cycler ( name ) VALUES ( 'c1.2' );

INSERT INTO team (
  name,
  cyclers
) VALUES (
  'team1',
  t_cycler_list(
    ( SELECT REF(c) FROM cycler c WHERE name = 'c1.1' ),
    ( SELECT REF(c) FROM cycler c WHERE name = 'c1.2' )
  )
);

Ensuite, vous pouvez insérer la ligne. Mais, si vous avez une autre table du même type d'objet :

CREATE TABLE cycler2 OF t_cycler (
    name PRIMARY KEY
);

INSERT INTO cycler2 ( name ) VALUES ( 'c2.1' );

Et essayez de faire :

INSERT INTO team (
  name,
  cyclers
) VALUES (
  'team2',
  t_cycler_list(
    ( SELECT REF(c) FROM cycler2 c WHERE name = 'c2.1' )
  )
);

Ensuite, vous obtenez l'erreur :

db<>violon ici