Précédent   Forum des professionnels en informatique > Bases de données > Oracle > Administration
Administration Forum d'entraide sur l'administration du serveur Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 07/12/2007, 10h47   #1
Candidat au titre de Membre du Club
 
Inscription : février 2005
Messages : 87
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 87
Points : 11
Points : 11
Par défaut Nclob Limite a 4000 octet

Bonjour
Sur un base Oracle 92010 sous W2003 qd je creer une table avec colonne NCLOB la taille est automatiquement initialise à 4000. je ne sai pas quoiq faire pour pouvoir stocker 2Go comme c'est indique dans la doc.

Code :
1
2
3
CREATE TABLE TEST1
( id          number, 
 TESTCLOB    NCLOB )
parameters de la bases
Code :
1
2
3
 
NLS_CHARACTERSET                 AL32UTF8
NLS_NCHAR_CHARACTERSET       AL16UTF16
Merci d'avance de votr aide.
exempleinfo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2007, 19h42   #2
Expert Confirmé
 
Inscription : février 2006
Messages : 3 433
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 3 433
Points : 3 462
Points : 3 462
Voici un exemple qui crée un NCLOB de 1 Mo:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
SQL> SET serveroutput ON
SQL> 
SQL> DROP TABLE t;
 
TABLE supprimee.
 
SQL> 
SQL> CREATE TABLE t(x int, y nclob);
 
TABLE creee.
 
SQL> 
SQL> declare
  2  n nclob;
  3  l number;
  4  begin
  5  dbms_lob.createtemporary(n, true, dbms_lob.session);
  6  FOR i IN 1..1024
  7  loop
  8   dbms_lob.WRITE(n, 1024, ((i-1)*1024) + 1, rpad('*', 1024, '*'));
  9  end loop;
 10  INSERT INTO t VALUES(1, n);
 11  commit;
 12  SELECT dbms_lob.getlength(t.y) INTO l FROM t WHERE x = 1;
 13  dbms_output.put_line('taille du LOB en Mo: ' || l/(1024*1024));
 14  end;
 15  /
taille du LOB en Mo: 1
 
Procedure PL/SQL terminee avec succes.
 
SQL> SHOW errors
Pas d'erreur.
SQL>
Voir aussi les exemples du Application Developer's Guide - Large Objects
__________________
P. Forstmann

AskTom Forums OTN doc 8, 9, 10 et 11
pifor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2007, 10h21   #3
Expert Confirmé Sénior


 
Avatar de laurentschneider
 
Homme Laurent Schneider
Administrateur de base de données
Inscription : décembre 2005
Messages : 2 927
Détails du profil
Informations personnelles :
Nom : Homme Laurent Schneider
Localisation : Suisse

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : Finance

Informations forums :
Inscription : décembre 2005
Messages : 2 927
Points : 4 549
Points : 4 549
Citation:
Envoyé par exempleinfo Voir le message
colonne NCLOB la taille est automatiquement initialise à 4000
comment arrives-tu à cette conclusion? il n'y a pas d'initialisation de taille. Par défaut la taille est de zero (null), non?

Cependant il y a une limite dans SQL qu'un literal ne peut avoir plus de 4000 characters.
Code :
1
2
3
4
5
6
7
8
9
SELECT length(lpad(to_clob('x'),1000000) ) FROM dual;
LENGTH(LPAD(TO_CLOB('X'),1000000))
----------------------------------
                           1000000
 
SELECT '123456789... ... ...5000' FROM dual;
 
Error at line 1
ORA-01704: string literal too long
__________________
Mon blog : laurentschneider.com
Mon livre : Advanced Oracle SQL Programming
laurentschneider est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h29.


 
 
 
 
Partenaires

Hébergement Web