# Oracle 9.2i, Begrenzung der Anzahl Zeichen pro Spalte



## tplanitz (12. August 2006)

Hallo,

weiß jemand wieviele Zeichen man in einer Oracle 9.2i DB pro Spalte maximal speichern kann? 
Bekomme die Melung:
Caused by: java.sql.SQLException: ORA-01401: inserted value too large for column

Das Problem ist das ich im Office bei mir auf Arbeit die spalte ohne weiteres speichern konnte. Kann man im OracleEnterpriseManager evtl. die Anzahl der Zeichen pro Spalte begrenzen/aufbohren ?

Insgesamt möchte ich ein Statement im reposetory speichern das 2204 Zeichen beinhaltet, das muß doch irgendwie gehen? Ich habe mal was von einer Bergrenzung bis 4000 Zeichen gehört.

Gruß aus Berlin


----------



## ishino (12. August 2006)

VARCHAR2 ist auf 4000 Zeichen begrenzt, alles was darueber hinaus geht, muss in einem CLOB gespeichert werden. Mit *desc <table>* kannst Du die Datentypen/laenge anzeigen lassen. Alternativ geht auch das hier:


```
SELECT column_name, data_length FROM user_tab_columns 
WHERE table_name = '<table>'
ORDER BY 1
```

Falls die Spalte einfach zu klein dimensioniert ist, kannst Du mit ALTER TABLE entsprechende Aenderungen vornehmen:


```
SQL> create table varchar2_ex(str varchar2(200));

Table created.

SQL> desc varchar2_ex
 Name                                      Null?    Type
 ----------------------------------------- -------- ---------------------------- 
STR                                                VARCHAR2(200)

SQL> alter table varchar2_ex modify str varchar2(1000);

Table altered.

SQL> desc varchar2_ex
 Name                                      Null?    Type
 ----------------------------------------- -------- ---------------------------- 
STR                                                VARCHAR2(1000)
```

Fuer Deine Zwecke, also das Vergroessern einer Spaltenlaenge, geht das problemlos (bis zum Limit des Datentyps). Im umgekehrten Fall, also dem Verkleinern der Laenge, geht das nur dann, wenn nach dem ALTER TABLE alle vorhandenen Werte noch in die Spalte reinpassen (MIN(Spaltenlaenge) = MAX(Laenge der vorhandenen Werte)).


----------

