Bonjour,
Je commence en base de données et je voudrai savoir si quelqu'un connait un moyen d'utiliser wchar_t avec pro c. Merci de vos réponses.
Bonjour,
Je commence en base de données et je voudrai savoir si quelqu'un connait un moyen d'utiliser wchar_t avec pro c. Merci de vos réponses.
Oracle supporte les chaines Unicode de type UTF-16/UCS-16 (taille fixe sur 2 bytes).
Le type C utilisé par Oracle est "utext".
Sous Windows, wchar_t est implémenté sur 2 bytes. Donc il y a une correspondance implicite entre wchar_t et le type oracle utext.
Sous Linux et autres unixes, wchar_t est souvent implémenté sur 4 bytes. Dans ce cas, wchar_t est incompatible avec utext.
Pro*C ne supporte les chaines unicode que pour les variables utilisateur utilisées pour les binds dans les requêtes.
Les ordres SQL sont eux uniquement supporté en ANSI (char*) .
Enfin, il faut aussiinclure le header "sqlucs2.h" pour gérer les chaines unicode en pro*c
Exemple tiré des docs PRO*C :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 #include <sqlca.h> #include <sqlucs2.h> main() { utext employee1[20] ; /* Change to STRING datatype: */ EXEC ORACLE OPTION (CHAR_MAP=STRING) ; utext employee2[20] ; EXEC SQL CREATE TABLE emp (ename CHAR(60)) ; ... /*********************************************************** Initializing employee1 or employee2 is compiler-dependent. **********************************************************/ EXEC SQL INSERT INTO emp (ename) VALUES (:employee1) ; ... EXEC SQL SELECT ename INTO :employee2 FROM emp; /* employee2 is now not blank-padded and is null-terminated */ ...
Vincent Rogier.
Rubrique ORACLE : Accueil - Forum - Tutoriels - FAQ - Livres - Blog
Vous voulez contribuer à la rubrique Oracle ? Contactez la rubrique !
OCILIB (C Driver for Oracle)
Librairie C Open Source multi-plateformes pour accéder et manipuler des bases de données Oracle
ca veut dire que si je lis un fichier unicode il doit etre utf-16? comment est ce qu'on arrive a intégrer dans Oracle un fichier unicode sous unix?
Sous unix, si ton flux externe est récupéré sous forme de wchar_t, il te faudra le convertir en UTF-16 pour l'intégrer dans Oracle
Vincent Rogier.
Rubrique ORACLE : Accueil - Forum - Tutoriels - FAQ - Livres - Blog
Vous voulez contribuer à la rubrique Oracle ? Contactez la rubrique !
OCILIB (C Driver for Oracle)
Librairie C Open Source multi-plateformes pour accéder et manipuler des bases de données Oracle
donc intégrer un fichier encodé UTF-8 dans une base Oracle ne se passe pas bien sous Linux?
UTF8, c'est particuliers car cela peut être géré comme des char *.
Il faut faire juste attention à la longueur des chaines. Une colonne VARCHAR2(30) c'est 30 bytes et pas 30 caractères. Alors qu'une colonne VARCHAR2(30 CHAR) c'est caractères qui peut être 90 bytes.
Vincent Rogier.
Rubrique ORACLE : Accueil - Forum - Tutoriels - FAQ - Livres - Blog
Vous voulez contribuer à la rubrique Oracle ? Contactez la rubrique !
OCILIB (C Driver for Oracle)
Librairie C Open Source multi-plateformes pour accéder et manipuler des bases de données Oracle
Partager