2010-12-07 48 views
1

J'ai une erreur "ora-03001: fonctionnalité non implémentée" lorsque j'essaie d'insérer un enregistrement dans le tableau ci-dessous. J'ai cherché toute la nuit, toujours pas de chance. J'utilise Oracle10g édition express.Besoin d'aide sur Oracle 10g 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')); 
+0

Pourquoi utilisez-vous l'édition d'expression lorsque vous pouvez facilement télécharger la version complète? – orangepips

+0

Je suis nouveau à cette chose, et je pense que l'édition express est gratuite. – Nate

+0

la version complète est gratuite à des fins d'auto-éducation. La licence appliquée à l'utilisation commerciale. – APC

Répondre

3

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 dans PL/SQL utilisant un type RECORD. Ce qui n'est pas pertinent pour votre situation, mais je le mentionne pour l'exhaustivité.

Insertion d'une variable d'enregistrement ressemblerait à quelque chose comme ça

declare 
    r23 t23%rowtype; -- record declaration 
begin 
    r23.id := 1; 
    r23.created := sysdate; 
    -- insert using record variable 
    insert into t23 
    values r23; 
end; 
+0

Merci pour la réponse. Je suis novice pour les bases de données Oracle. J'utilise habituellement phpMyAdmin avec mySQL. – Nate

+0

+1 pour les informations sur l'insertion dans un RECORD. Il est toujours difficile de trouver des informations à ce sujet car elles ne sont pas suffisamment bien documentées –