sql >> Database >  >> RDS >> Oracle

SCOPE voor een tabel met REF's

U wilt het bereik toevoegen aan de COLUMN_VALUE pseudo-kolom van de geneste tabel:

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

Als je dat dan doet:

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' )
  )
);

Vervolgens kunt u de rij invoegen. Maar als u een andere tabel van hetzelfde objecttype heeft:

CREATE TABLE cycler2 OF t_cycler (
    name PRIMARY KEY
);

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

En probeer te doen:

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

Dan krijg je de foutmelding:

db<>fiddle hier




  1. Multidimensionale array vullen

  2. Verbinding maken met MS SQL Server met Windows-verificatie met Python?

  3. SQL SELECT Somwaarden zonder duplicaten op te nemen

  4. If-voorwaarde gebruiken in waar-clausule