Difference between revisions of "Oracle/fr"

From Free Pascal wiki
Jump to navigationJump to search
m (Fixed syntax highlighting)
 
(4 intermediate revisions by one other user not shown)
Line 13: Line 13:
  
 
== Accès direct à Oracle ==
 
== Accès direct à Oracle ==
You can directly connect Lazarus and Oracle by using Oracle Data Access Components (ODAC). It is a library of components that provides native connectivity to Oracle from Lazarus (and Free Pascal) on Windows, Mac OS X, iOS, Android, Linux, and FreeBSD for both 32-bit and 64-bit platforms. The ODAC library is designed to help programmers develop faster and more native Oracle database applications.
+
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.
  
This [https://www.devart.com/odac/download.html Lazarus component] is free to download.
+
Ce [https://www.devart.com/odac/download.html composant Lazarus] est libre en téléchargement.
  
 
== Accès POO à Oracle ==
 
== Accès POO à Oracle ==
Built over the low-level interface, the SQLDB framework supplied with FPC supports accessing Oracle (using TOracleConnection); see also [[Lazarus_Database_Overview#Lazarus_and_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/fr|TOracleConnection]] qui fonctionne aussi pour Lazarus), voir aussi [[Lazarus_Database_Overview/fr#Lazarus_et_Oracle|Lazarus et Oracle]].
  
Lazarus also has a component: [[TOracleConnection/fr|TOracleConnection]]
+
* 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.
* Hostname: as with other sqldb connectors, use hostname or IP address. Leave empty if you use a TNSNAMES.ORA net service name in DatabaseName
 
* Username/password: same as with other sqldb connectors
 
 
* DatabaseName:  
 
* DatabaseName:  
** instance/SID of the Oracle server you want to connect to '''or'''
+
** instance/SID du serveur Oracle auquel vous voulez vous connecter '''ou'''
** net service name in a TNSNAMES.ORA file
+
** le nom de service réseau dans le fichier TNSNAMES.ORA.
  
{{Note|Released FPC/Lazarus x64 versions on Windows do not include an Oracle connector. If you enable it and test successfully, please submit a patch with the changes so it can be included}}
+
{{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.}}
  
 
== Résolution de problèmes ==
 
== Résolution de problèmes ==
 
=== Jeu de caractères Client et serveur ===
 
=== Jeu de caractères Client et serveur ===
To get info about what character set/NLS settings are active, you can run the following program.
+
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.
Please don't forget to fill out correct server name, username, password and database name before compiling.
 
  
<syntaxhighlight>
+
<syntaxhighlight lang=pascal>
 
program oracharset;
 
program oracharset;
  
Line 125: Line 122:
  
 
=== ORA-00911 : invalid character ===
 
=== ORA-00911 : invalid character ===
If you see this error message, you might want to try
+
Si vous voyez ce message d'erreur, vous pourriez essayer :
* removing a trailing semicolon - ; - if you have it in a SELECT statement
+
* de retirer un point-virgule terminal - ; - si vous en avez dans un ordre SELECT.
* adding a trailing semicolon (e.g. in CALL or EXECUTE statements)
+
* d'ajouter un point-virgule terminal (p.ex. dans des ordres CALL ou EXECUTE)
See this thread which applies to .Net but may apply to SQLDB as well: [http://social.msdn.microsoft.com/Forums/en/adodotnetdataproviders/thread/58a27505-a3fb-4cb1-9063-3946b3f26acd]
+
Voir ce fil de discussion qui s'applique à .Net mais qui pourrait s'appliquer aussi bien à SQLdb : [http://social.msdn.microsoft.com/Forums/en/adodotnetdataproviders/thread/58a27505-a3fb-4cb1-9063-3946b3f26acd]
  
 
Revenir vers [[Packages List/fr|Liste des paquets]].
 
Revenir vers [[Packages List/fr|Liste des paquets]].

Latest revision as of 05:38, 23 February 2020

English (en) español (es) français (fr) 日本語 (ja)

Portail de la base de données

Références:

Tutoriels/articles pratiques :

Bases de données

Advantage - MySQL - MSSQL - Postgres - Interbase - Firebird - Oracle - ODBC - Paradox - SQLite - dBASE - MS Access - Zeos

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.
Light bulb  Remarque: 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.

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.