Sign in Join
Wiki copytemporary

Oracle/fr: what changed

Revision 0 to 1. Removed lines have a minus sign; added lines have a plus sign.

Title: Oracle/fr

OldNewLine
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).*

Back to history