# Oracle 9: ORA-00984: Spalte hier nicht zulässig



## javas (19. Juli 2010)

Hallo zusammen 

Ich habe folgendes Problem:
Ich will mit folgendem Query eine neue Tabelle erstellen:

```
Create Table testtable(
id int default testtable_id_seq.nextval PRIMARY KEY,
name VARCHAR(100) NOT NULL
);
```

Nun erhalte ich folgenden Fehler:
16:03:22  [CREATE - 0 row(s), 0.000 secs]  [Error Code: 984, SQL State: 42000]  ORA-00984: Spalte hier nicht zulässig

Die Sequenz existiert!

Kann mir jemand helfen?
Der Fehler ist auf der der 2. Zeile!

Besten Dank


----------



## Steiner_B (19. Juli 2010)

Bin zwar kein Oracle-Mensch, aber kann es sein das der Datentyp statt "int" "number" heißen muss?


----------



## Yaslaw (19. Juli 2010)

Dass man eine Sequenz als Default-Value setz hab ich so noch nie gemacht. Wir lösten das jeweils über einen Trigger.

Hab da im Internet auch was gefunden dass genau dein Fehler ausgibt
http://thinkoracle.blogspot.com/2006/02/oracle-sequences.html



> -- Won't work:
> 
> ```
> CREATE TABLE MyTable (seq_id NUMBER(1) DEFAULT rollover_seq.NEXTVAL);
> ...



Achja, bitte in Zukunft deine SQLs in [code=sql]dein Code[/code] setzen....


----------



## dbwizard (19. Juli 2010)

javas hat gesagt.:


> Hallo zusammen
> Nun erhalte ich folgenden Fehler:
> 16:03:22  [CREATE - 0 row(s), 0.000 secs]  [Error Code: 984, SQL State: 42000]  ORA-00984: Spalte hier nicht zulässig
> 
> ...



Hallo,

Wie Yaslaw ja schon geschrieben hat : Dies geht nicht so. Du musst das Atrtribut als Number erstellen und anschliessend z.b per Trigger füllen lassen.

Also etw aso :


```
CREATE TABLE testtable
    (id                             NUMBER NOT NULL,
    name                           VARCHAR2(100 BYTE) NOT NULL
  ,
  CONSTRAINT TESTTABLE_PK
  PRIMARY KEY (id)
  USING INDEX
  TABLESPACE  ruma_index)
  TABLESPACE  ruma_data
  NOPARALLEL
  LOGGING
  MONITORING
/


CREATE OR REPLACE TRIGGER trig_Testtable_get_pk
 BEFORE
  INSERT
 ON TESTTABLE
REFERENCING NEW AS NEW OLD AS OLD
 FOR EACH ROW
BEGIN
    SELECT testtable_id_seqT.NEXTVAL
        INTO :NEW.ID
        FROM DUAL;
END trig_Testtable_get_pk;
/
```

Gruss


----------



## javas (20. Juli 2010)

Hallo zusammen
Danke für eure Antworten!
Ich werde morgen mal probieren, ob dies für meinen Anwendungszweck geeignet ist!
Freundliche Grüsse
javas


----------



## javas (21. Juli 2010)

Leider funktioniert das so nicht! Beim Erstellen des Triggers erhalte ich folgenden Fehler:
Fehlender IN- oder OUT-Parameter auf Index:: 1
Wisst ihr was das Problem sein könnte?


----------

