Besoin d'aide sur l'édition express d'Oracle
-
09-10-2019 - |
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'));
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