Oracle/fr
│
English (en) │
español (es) │
français (fr) │
日本語 (ja) │
Interface de bas niveau du serveur Oracle
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.
Il y a deux programmes exemples :
- 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.
- test01 un simple programmme de test pour montrer l'interface.
Accès direct à Oracle
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.
Ce composant Lazarus est libre en téléchargement.
Accès POO à Oracle
Construit par dessus l'interface de bas-niveau, le framework SQLdb fourni avec FPC prend en charge l'accès à Oracle (en utilisant TOracleConnection qui fonctionne aussi pour Lazarus), voir aussi Lazarus et Oracle.
- 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.
- Username/password : comme avec les autres connecteurs SQLdb.
- DatabaseName:
- instance/SID du serveur Oracle auquel vous voulez vous connecter ou
- le nom de service réseau dans le fichier TNSNAMES.ORA.
Résolution de problèmes
Jeu de caractères Client et serveur
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.
program oracharset;
{ Shows client and server character set/NLS info}
{ PLEASE EDIT PASSWORDS ETC BELOW. }
{$mode objfpc}{$H+}
uses {$IFDEF UNIX} {$IFDEF UseCThreads}
cthreads, {$ENDIF} {$ENDIF}
Classes,
SysUtils,
sqldb,
oracleconnection;
var
Col: integer;
Conn: TOracleConnection;
Tran: TSQLTransaction;
Q: TSQLQuery;
begin
Conn := TOracleConnection.Create(nil);
Tran := TSQLTransaction.Create(nil);
Q := TSQLQuery.Create(nil);
try
// * EDIT IDENTIFYING INFO AS NEEDED*
Conn.HostName := '';
Conn.UserName := 'system';
Conn.Password := '';
Conn.DatabaseName := 'XE';
// *END IDENTIFIYING INFO*
Conn.Transaction := Tran;
Q.DataBase := Conn;
Conn.Open;
Tran.Active := true;
writeln('Server character set info:');
Q.SQL.Text := 'SELECT value$ FROM sys.props$ WHERE name like ''NLS_%'' ';
Q.Open;
Q.First;
while not (Q.EOF) do
begin
writeln('*****************');
for Col := 0 to Q.Fields.Count - 1 do
begin
try
writeln(Q.Fields[Col].DisplayLabel + ':');
writeln(Q.Fields[Col].AsString);
except
writeln('Error retrieving field ', Col);
end;
end;
Q.Next;
end;
Q.Close;
writeln('');
writeln('Client character set info:');
Q.SQL.Text := 'SELECT * FROM NLS_SESSION_PARAMETERS ';
Q.Open;
Q.First;
while not (Q.EOF) do
begin
writeln('*****************');
for Col := 0 to Q.Fields.Count - 1 do
begin
try
writeln(Q.Fields[Col].DisplayLabel + ':');
writeln(Q.Fields[Col].AsString);
except
writeln('Error retrieving field ', Col);
end;
end;
Q.Next;
end;
Q.Close;
// *END EXAMPLE BUG TESTING CODE*
Conn.Close;
finally
Q.Free;
Tran.Free;
Conn.Free;
end;
writeln('Program complete. Press a key to continue.');
readln;
end.
ORA-00911 : invalid character
Si vous voyez ce message d'erreur, vous pourriez essayer :
- de retirer un point-virgule terminal - ; - si vous en avez dans un ordre SELECT.
- d'ajouter un point-virgule terminal (p.ex. dans des ordres CALL ou EXECUTE)
Voir ce fil de discussion qui s'applique à .Net mais qui pourrait s'appliquer aussi bien à SQLdb : [1]
Revenir vers Liste des paquets.