Question

J'ai eu erreur « ora-03001: fonction inappliquées » lorsque je tente d'insérer un enregistrement sur la table ci-dessous. J'ai cherché toute la nuit, toujours pas de chance. J'utilise Oracle10g Express Edition.

create or replace type MajorsType As varray(20) of varchar2(10);

create or replace type studenttype as object (
stuID varchar2(5),
lastName varchar2(15),
firstName varchar2(12),
majors MajorsType)
INSTANTIABLE
NOT FINAL;

create table Student of StudentType (
constraint student_stuID_pk PRIMARY KEY(stuID));

INSERT INTO student values StudentType ('S999', 'Smith', 'John', MajorsType('Math', 'Accounting'));
Était-ce utile?

La solution

Il est simple erreur de syntaxe: la clause VALUES exige que tout soit enveloppé entre parenthèses:

SQL> INSERT INTO student
  2  values ( StudentType ('S999', 'Smith', 'John', MajorsType('Math', 'Accounting')))
  3  /

1 row created.

SQL>

Ceci est valable que nous transmettons à plusieurs valeurs scalaires ou un seul type.


Le seul cas où il ne s'applique pas est un insert en PL / SQL en utilisant un type d'enregistrement. Ce qui est pas pertinent à votre situation, mais je suis le mentionner pour être complet.

Insertion d'une variable d'enregistrement ressemblerait à quelque chose comme ceci

declare
    r23 t23%rowtype;  -- record declaration
begin
    r23.id := 1;
    r23.created := sysdate;
    -- insert using record variable
    insert into t23
    values r23; 
end;
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top