Oracle/fr: what changed
Revision 0 to 1. Removed lines have a minus sign; added lines have a plus sign.
Title: Oracle/fr
| Old | New | Line | |
|---|---|---|---|
| 1 | + | ## Interface de bas niveau du serveur Oracle | |
| 2 | + | ||
| 3 | + | L'interface de bas niveau du serveur Oracle existe d'une unité, **oraoci**, qui est une traduction directe des fichiers d'en-tête de l'interface d'Oracle. | |
| 4 | + | ||
| 5 | + | Il y a deux programmes exemples : | |
| 6 | + | ||
| 7 | + | - **oraclew** contient quelques routines utilitaire pour l'interface Oracle, pour une gestion plus facile des ensembles résultats. Nécessite l'unité Classes de la FCL. | |
| 8 | + | - **test01** un simple programmme de test pour montrer l'interface. | |
| 9 | + | ||
| 10 | + | ## Accès direct à Oracle | |
| 11 | + | ||
| 12 | + | Vous pouvez connecter directement Lazarus et Oracle en utilisant Oracle Data Access Components (ODAC). C'est une bibliothèque de composants qui fournissent une connectivité native à Oracle depuis Lazarus (et Free Pascal) sur Windows, Mac OS X, iOS, Android, Linux, et FreeBSD pour les plates-formes 32-bit et 64-bit. La bibliothèque ODAC est conçue pour aider les programmeurs à développer plus facilement et de façon native des applications natives Oracle. | |
| 13 | + | ||
| 14 | + | Ce [composant Lazarus](https://www.devart.com/odac/download.html) est libre en téléchargement. | |
| 15 | + | ||
| 16 | + | ## Accès POO à Oracle | |
| 17 | + | ||
| 18 | + | Construit par dessus l'interface de bas-niveau, le framework SQLdb fourni avec FPC prend en charge l'accès à Oracle (en utilisant [[TOracleConnection/fr|TOracleConnection]] qui fonctionne aussi pour Lazarus), voir aussi [[Lazarus Database Overview/fr|Lazarus et Oracle]]. | |
| 19 | + | ||
| 20 | + | - Hostname : comme avec les autres connecteurs SQLdb, utilisez hostname ou l'adresse IP. Laissez vide si vous utilisez un nom de service réseau TNSNAMES.ORA dans le DatabaseName. | |
| 21 | + | - Username/password : comme avec les autres connecteurs SQLdb. | |
| 22 | + | - DatabaseName: | |
| 23 | + | - instance/SID du serveur Oracle auquel vous voulez vous connecter **ou** | |
| 24 | + | - le nom de service réseau dans le fichier TNSNAMES.ORA. | |
| 25 | + | ||
| 26 | + | > **Note:** Les versions FPC/Lazarus x64 sur Windows n'incluent pas de connecteur Oracle. Si vous l'activez et le testez avec succès, SVP veuillez soumettre un correctif avec le changement, il pourra être ainsi inclus. | |
| 27 | + | ||
| 28 | + | ## Résolution de problèmes | |
| 29 | + | ||
| 30 | + | ### Jeu de caractères Client et serveur | |
| 31 | + | ||
| 32 | + | Pour obtenir de l'info quel jeu de caractères/réglages NLS est actif, vous pouvez exécuter le programme suivant : SVP, n'oubliez pas de remplir de manière correcte le nom de serveur, le nom d'utilisateur, le mot de passe et le nom de base de données avant de compiler. | |
| 33 | + | ||
| 34 | + | ``` pascal | |
| 35 | + | program oracharset; | |
| 36 | + | ||
| 37 | + | { Shows client and server character set/NLS info} | |
| 38 | + | { PLEASE EDIT PASSWORDS ETC BELOW. } | |
| 39 | + | ||
| 40 | + | {$mode objfpc}{$H+} | |
| 41 | + | ||
| 42 | + | uses {$IFDEF UNIX} {$IFDEF UseCThreads} | |
| 43 | + | cthreads, {$ENDIF} {$ENDIF} | |
| 44 | + | Classes, | |
| 45 | + | SysUtils, | |
| 46 | + | sqldb, | |
| 47 | + | oracleconnection; | |
| 48 | + | ||
| 49 | + | var | |
| 50 | + | Col: integer; | |
| 51 | + | Conn: TOracleConnection; | |
| 52 | + | Tran: TSQLTransaction; | |
| 53 | + | Q: TSQLQuery; | |
| 54 | + | begin | |
| 55 | + | Conn := TOracleConnection.Create(nil); | |
| 56 | + | Tran := TSQLTransaction.Create(nil); | |
| 57 | + | Q := TSQLQuery.Create(nil); | |
| 58 | + | try | |
| 59 | + | // * EDIT IDENTIFYING INFO AS NEEDED* | |
| 60 | + | Conn.HostName := ''; | |
| 61 | + | Conn.UserName := 'system'; | |
| 62 | + | Conn.Password := ''; | |
| 63 | + | Conn.DatabaseName := 'XE'; | |
| 64 | + | // *END IDENTIFIYING INFO* | |
| 65 | + | Conn.Transaction := Tran; | |
| 66 | + | Q.DataBase := Conn; | |
| 67 | + | Conn.Open; | |
| 68 | + | Tran.Active := true; | |
| 69 | + | ||
| 70 | + | writeln('Server character set info:'); | |
| 71 | + | Q.SQL.Text := 'SELECT value$ FROM sys.props$ WHERE name like ''NLS_%'' '; | |
| 72 | + | Q.Open; | |
| 73 | + | Q.First; | |
| 74 | + | while not (Q.EOF) do | |
| 75 | + | begin | |
| 76 | + | writeln('*****************'); | |
| 77 | + | for Col := 0 to Q.Fields.Count - 1 do | |
| 78 | + | begin | |
| 79 | + | try | |
| 80 | + | writeln(Q.Fields[Col].DisplayLabel + ':'); | |
| 81 | + | writeln(Q.Fields[Col].AsString); | |
| 82 | + | except | |
| 83 | + | writeln('Error retrieving field ', Col); | |
| 84 | + | end; | |
| 85 | + | end; | |
| 86 | + | Q.Next; | |
| 87 | + | end; | |
| 88 | + | Q.Close; | |
| 89 | + | ||
| 90 | + | writeln(''); | |
| 91 | + | writeln('Client character set info:'); | |
| 92 | + | Q.SQL.Text := 'SELECT * FROM NLS_SESSION_PARAMETERS '; | |
| 93 | + | Q.Open; | |
| 94 | + | Q.First; | |
| 95 | + | while not (Q.EOF) do | |
| 96 | + | begin | |
| 97 | + | writeln('*****************'); | |
| 98 | + | for Col := 0 to Q.Fields.Count - 1 do | |
| 99 | + | begin | |
| 100 | + | try | |
| 101 | + | writeln(Q.Fields[Col].DisplayLabel + ':'); | |
| 102 | + | writeln(Q.Fields[Col].AsString); | |
| 103 | + | except | |
| 104 | + | writeln('Error retrieving field ', Col); | |
| 105 | + | end; | |
| 106 | + | end; | |
| 107 | + | Q.Next; | |
| 108 | + | end; | |
| 109 | + | Q.Close; | |
| 110 | + | // *END EXAMPLE BUG TESTING CODE* | |
| 111 | + | Conn.Close; | |
| 112 | + | finally | |
| 113 | + | Q.Free; | |
| 114 | + | Tran.Free; | |
| 115 | + | Conn.Free; | |
| 116 | + | end; | |
| 117 | + | writeln('Program complete. Press a key to continue.'); | |
| 118 | + | readln; | |
| 119 | + | end. | |
| 120 | + | ``` | |
| 121 | + | ||
| 122 | + | ### ORA-00911 : invalid character | |
| 123 | + | ||
| 124 | + | Si vous voyez ce message d'erreur, vous pourriez essayer : | |
| 125 | + | ||
| 126 | + | - de retirer un point-virgule terminal - ; - si vous en avez dans un ordre SELECT. | |
| 127 | + | - d'ajouter un point-virgule terminal (p.ex. dans des ordres CALL ou EXECUTE) | |
| 128 | + | ||
| 129 | + | Voir ce fil de discussion qui s'applique à .Net mais qui pourrait s'appliquer aussi bien à SQLdb : [1](http://social.msdn.microsoft.com/Forums/en/adodotnetdataproviders/thread/58a27505-a3fb-4cb1-9063-3946b3f26acd) | |
| 130 | + | ||
| 131 | + | Revenir vers [[Packages List/fr|Liste des paquets]]. | |
| 132 | + | ||
| 133 | + | --- | |
| 134 | + | *From the Free Pascal wiki, page "Oracle/fr", as it stood on 2020-02-23 after a change by Trev, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).* |
