Sign in Join
Wiki copytemporary

Oracle/es

English · Español · Français · 日本語

Interfaz de bajo nivel del Servidor de BBDD Oracle

   La interfaz de bajo nivel al servidor de BB.DD de Oracle existe en una unidad, oraoci, la cual es una traducción directa de los ficheros de cabecera del interfaz Oracle.

   Hay dos programas de ejemplo:

Acceso OOP a Oracle

   Construido sobre la interfaz de bajo nivel, el marco de trabajo SQLDB que viene con FPC soporta el acceso a Oracle (utilizando TOracleConnection); ver también Lazarus_Database_Overview#Lazarus_and_Oracle

   Lazarus dispone de un componente:

. A fecha de realizar esta traducción de su versión en inglés no se si este inconveniente ha sido subsanado ya, si alguien lo sabe que corrija esto.

Resolución de problemas

Conjuntos de caracteres para Cliente y Servidor

   Podemos arrancar el siguiente programa para obtener información sobre que conjunto de caracteres/NLS se encuentran activos. Por favor, no olvides rellenar correctamente los datos de nombre de servidor, nombre de base de datos, nombre de usuario y contraseña antes de compilar.

pascal
 program oracharset;

 { Muestra información del conjunto de caracteres/NLS (Soporte Nacional de Lenguaje) utilizado en Cliente y Servidor}
 { Por favor edita los datos de conexión primero: nombre usuario, contraseña, nombre de servidor y base de datos. }

 {$mode objfpc}{$H+}

 uses {$IFDEF UNIX} {$IFDEF UseCThreads}
   cthreads, {$ENDIF} {$ENDIF}
   Classes,
   SysUtils,
   sqldb,
   oracleconnection;

 var
   Col: integer;
   Conn: TOracleConnection; { para la conexión }
   Tran: TSQLTransaction;   { para la transacción }
   Q: TSQLQuery;            { para la query o consulta }
 begin
   Conn := TOracleConnection.Create(nil); { Creamos Conexión reservando recursos }
   Tran := TSQLTransaction.Create(nil); {Creamos Transacción reservando recursos}
   Q := TSQLQuery.Create(nil); { Creamos consulta reservando recursos }
   try
     // * EDITAR INFORMACIÓN DE IDENTIFICACIÓN SEGÚN SEA NECESARIO *
     Conn.HostName := '';             { HostName: nombre del equipo al que conectamos }
     Conn.UserName := 'system';       { UserName: usuario de BB.DD con el que nos validamos }    
     Conn.Password := '';             { Password: contraseña del usuario para conectar a la BB.DD }
     Conn.DatabaseName := 'XE';       { DatabaseName: nombre de la base de datos (BB.DD)a la que conectamos dentro del servidor }
     // * FIN INFORMACIÓN DE IDENTIFICACIÓN *
     Conn.Transaction := Tran;
     Q.DataBase := Conn; { Pasamos los datos de conexión a la Query }
     Conn.Open; { Abrimos conexión }
     Tran.Active := true;

     writeln('Información del conjunto de caracteres del Servidor:');
     Q.SQL.Text := 'SELECT value$ FROM sys.props$ WHERE name like ''NLS_%'' ';
     Q.Open;
     Q.First;
     while not (Q.EOF) do  { Mientras la query no nos devuelva final hacer esto... }
      begin
       writeln('*****************');
       for Col := 0 to Q.Fields.Count - 1 do { desde columna 0 hasta cuenta de campos-1...}
        begin
         try
          writeln(Q.Fields[Col].DisplayLabel + ':'); { Imprimimos en pantalla la etiqueta del campo con índice Col }
          writeln(Q.Fields[Col].AsString); { Imprimimos en pantalla el campo con índice Col de la query, retornado como cadena }
         except
          writeln('Error solicitando campo ', Col);
         end;
        end;
       Q.Next;
      end;
      Q.Close;

      writeln('');
      writeln('Información del conjunto de caracteres del cliente:');
      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 solicitando campo ', Col);
          end;
         end;
         Q.Next;
       end;
       Q.Close;
       // *FIN DE CÓDIGO DE EJEMPLO DE TESTEO DE ERROR*
       Conn.Close; { Cerramos la conexión }
   finally
    Q.Free; { Liberamos los recursos de la query }
    Tran.Free; { Liberamos los recursos de la transacción }
    Conn.Free; { Liberamos los recursos de la conexión }
   end;
   writeln('Programa completado. Presiona cualquier tecla para continuar.');
   readln;
 end.

ORA-00911 : invalid character

   Si visualizas este mensaje de error (o su equivalente en español (carácter no válido), puedes probar lo siguiente:

   Ver este hilo que se aplica a .Net pero que se puede aplicar también a SQLDB: 1

   Volver a Packages List


From the Free Pascal wiki, page "Oracle/es", 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.

Revision 2, last changed by WikiArchive .

Talk about this page

Nobody has opened a bench for this page yet. Sign in to open one.