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 28/01/2008, 09h36   #1
Invité régulier
 
Inscription : mars 2003
Messages : 43
Détails du profil
Informations personnelles :
Âge : 30

Informations forums :
Inscription : mars 2003
Messages : 43
Points : 9
Points : 9
Envoyer un message via MSN à besco
Par défaut VARCHAR vs NVARCHAR

Bonjour,

Mon problème est que je souhaite passer les varchar en nvarchar d'une table pour qu'il prenne en compte le jeu de caractère (NLS_NATIONAL_CHARACTERSET) AL16UTF16 mais je perds mes données en faisant un insert into table2 select * from table1

Je vois pas ce qui empêche oracle de le faire correctement..

qq a deja fait ça ?
besco est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/01/2008, 10h06   #2
Rédacteur

 
Avatar de SheikYerbouti
 
Inscription : mai 2003
Messages : 6 533
Détails du profil
Informations forums :
Inscription : mai 2003
Messages : 6 533
Points : 6 469
Points : 6 469
Avez-vous essayé l'instruction CAST ?
Code :
1
2
3
SELECT cast(varchar2_column AS NVARCHAR2(20)) 
INTO nvarchar2_column 
FROM ...
__________________
Rédacteur Oracle (Oracle ACE)
Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche
Je ne réponds pas aux questions techniques par MP
Blogs: Forms-PL/SQL-J2EE - Forms Java Beans
SheikYerbouti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/01/2008, 14h07   #3
Invité régulier
 
Inscription : mars 2003
Messages : 43
Détails du profil
Informations personnelles :
Âge : 30

Informations forums :
Inscription : mars 2003
Messages : 43
Points : 9
Points : 9
Envoyer un message via MSN à besco
j'ai essayé ta requête mais les champs sont toujours vide.
Avec toad, j'insère juste un caractère et automatiquement il me vide le champ. Cela viendrait d'un paramétrage de la base ?
besco est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/01/2008, 16h11   #4
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
Un petit test avec Oracle 10.2.0.2:

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
bas002> SELECT * FROM nls_database_parameters WHERE parameter LIKE '%SET%';
 
PARAMETER                      VALUE
------------------------------ ----------------------------------------
NLS_CHARACTERSET               WE8MSWIN1252
NLS_NCHAR_CHARACTERSET         AL16UTF16
bas002> CREATE TABLE t1(x varchar2(10));
 
TABLE created.
 
bas002> CREATE TABLE t2(x nvarchar2(10));
 
TABLE created.
bas002> INSERT INTO t1 VALUES('àéèùç');
 
1 row created.
 
bas002> SELECT * FROM t1;
 
X
----------
àéèùç
 
bas002> INSERT INTO t2 SELECT * FROM t1;
 
1 row created.
 
bas002> SELECT * FROM t2;
 
X
----------
àéèùç
Pouvez-vous préciser votre version d'Oracle et nous donner un scénario similaire ?
__________________
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 29/01/2008, 11h24   #5
Invité régulier
 
Inscription : mars 2003
Messages : 43
Détails du profil
Informations personnelles :
Âge : 30

Informations forums :
Inscription : mars 2003
Messages : 43
Points : 9
Points : 9
Envoyer un message via MSN à besco
La version Oracle est 9.2.0.3

Le scénario donne le resultat suivant:

select * from t1

¿¿

select * from t2
besco est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/01/2008, 11h29   #6
Expert Confirmé
 
Avatar de LeoAnderson
 
Inscription : septembre 2004
Messages : 2 942
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 2 942
Points : 2 972
Points : 2 972
merci de coller TOUTE la sortie produite par le jeu d'essai de Pierre !
LeoAnderson est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/01/2008, 15h46   #7
Invité régulier
 
Inscription : mars 2003
Messages : 43
Détails du profil
Informations personnelles :
Âge : 30

Informations forums :
Inscription : mars 2003
Messages : 43
Points : 9
Points : 9
Envoyer un message via MSN à besco
SQL*Plus: Release 9.2.0.1.0 - Production on Tue Jan 29 15:44:51 2008

Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.


Connected to:
Oracle9i Enterprise Edition Release 9.2.0.3.0 - Production
With the Partitioning option
JServer Release 9.2.0.3.0 - Production

SQL> SELECT * FROM nls_database_parameters WHERE parameter LIKE '%SET%';

PARAMETER
--------------------------------------------------------------------------------
VALUE
--------------------------------------------------------------------------------
NLS_CHARACTERSET
WE8ISO8859P15

NLS_NCHAR_CHARACTERSET
AL16UTF16


SQL> CREATE TABLE t1(x varchar2(10));

Table created.

SQL> CREATE TABLE t2(x nvarchar2(10));

Table created.

SQL> INSERT INTO t1 VALUES ('àéèù');

1 row created.

SQL> SELECT * FROM t1;

X
------------------------------
¿¿

SQL> INSERT INTO t2 SELECT * FROM t1;

1 row created.

SQL> SELECT * FROM t2;

X
------------------------------
¿¿

SQL>


Et voila
besco est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/01/2008, 15h58   #8
Expert Confirmé
 
Avatar de LeoAnderson
 
Inscription : septembre 2004
Messages : 2 942
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 2 942
Points : 2 972
Points : 2 972
ben ça marche ?
LeoAnderson est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/01/2008, 17h13   #9
Invité régulier
 
Inscription : mars 2003
Messages : 43
Détails du profil
Informations personnelles :
Âge : 30

Informations forums :
Inscription : mars 2003
Messages : 43
Points : 9
Points : 9
Envoyer un message via MSN à besco
bah j'aimerai bien qu'il m'affiche un truc correct. j'adore oracle
besco est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/01/2008, 17h19   #10
Membre Expert
 
Avatar de Garuda
 
Homme Philippe CHIRCOP
Chef de projet
Inscription : juin 2007
Messages : 1 109
Détails du profil
Informations personnelles :
Nom : Homme Philippe CHIRCOP
Localisation : France

Informations professionnelles :
Activité : Chef de projet
Secteur : Bâtiment

Informations forums :
Inscription : juin 2007
Messages : 1 109
Points : 1 559
Points : 1 559
Et le NLS_CHARACTERSET du client ?
__________________
Garuda गरूड
Brahmâ la Guerre et Vishnu la Paix

Oracle 10.2.0.4 - Forms6i patch 17 - Toad 11.1 - sharePoint 2010
Garuda est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/01/2008, 19h15   #11
Expert Confirmé
 
Avatar de LeoAnderson
 
Inscription : septembre 2004
Messages : 2 942
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 2 942
Points : 2 972
Points : 2 972
Citation:
Envoyé par Garuda Voir le message
Et le NLS_CHARACTERSET du client ?
ainsi que le programme utilisé.
Si c'est SQL*Plus dans une fenêtre de commande MS-DOS, c'est mort pour l'affichage de l'UTF, ce qui ne veut pas dire que c'est mal stocké.

ce que je constate c'est que vous vous plaignez que les lignes n'étaient pas recopiées, et maintenant, elles le sont !
LeoAnderson est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2008, 10h55   #12
Invité régulier
 
Inscription : mars 2003
Messages : 43
Détails du profil
Informations personnelles :
Âge : 30

Informations forums :
Inscription : mars 2003
Messages : 43
Points : 9
Points : 9
Envoyer un message via MSN à besco
l'affichage ne fonctionne pas sous toad et SQL*plus.

Pour le NLS_LANG sous windows, j'ai mis dans le registre AMERICAN_AMERICA.UTF8 ou encore FRENCH_FRANCE.UTF8.

A votre avis, c'est jsute un problème d''affichage ?
besco est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2008, 11h22   #13
Expert Confirmé
 
Avatar de LeoAnderson
 
Inscription : septembre 2004
Messages : 2 942
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 2 942
Points : 2 972
Points : 2 972
Citation:
Envoyé par besco Voir le message
l'affichage ne fonctionne pas sous toad et SQL*plus.

Pour le NLS_LANG sous windows, j'ai mis dans le registre AMERICAN_AMERICA.UTF8 ou encore FRENCH_FRANCE.UTF8.

A votre avis, c'est jsute un problème d''affichage ?
oui
si vous avez iSQL*Plus, utilisez-le (mais juste pour ça ! )
tous les programmes ne savent pas gérer l'UTF. Sans parler des problèmes de NLS_LANG et autres joyeusetés !
LeoAnderson 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 12h38.


 
 
 
 
Partenaires

Hébergement Web