Sign in Join
Wiki copytemporary

Oracle/es: what changed

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

OldNewLine
11## Interfaz de bajo nivel del Servidor de BBDD Oracle
22
33   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.
44
55   Hay dos programas de ejemplo:
66
77- **oraclew** contiene algunas rutinas para el interfaz Oracle, para un manejo más fácil del conjunto resultante. Necesita la unidad **classes** del FCL.
88- **test01** es un simple programa para demostrar la interface.
99
1010## Acceso OOP a Oracle
1111
1212   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_Database_Overview#Lazarus_and_Oracle]]
1313
1414   Lazarus dispone de un componente:
1515
16-<figure>
17-<img src="sqldbcomponents.png" title="sqldbcomponents.png" />
18-<figcaption>sqldbcomponents.png</figcaption>
19-</figure>
16+![](/wiki-images/c/cc/Sqldbcomponents.png)
2017
2118- Hostname: igual que con otros conectores sqldb, utilizaremos el nombre de la máquina o la dirección IP. Dejaremos vacío si se utiliza el servicio de nombres de red TNSNAMES.ORA en DatabaseName.
2219- Username/password: igual que con otros conectores sqldb.
2320- DatabaseName:
2421 - Instancia/SID del servidor Oracle al que se necesita conectar **or**
2522 - servicio de nombres de red en un fichero TNSNAMES.ORA.
2623
2724. 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.
2825
2926## Resolución de problemas
3027
3128### Conjuntos de caracteres para Cliente y Servidor
3229
3330   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.
3431
3532``` pascal
3633 program oracharset;
3734
3835 { Muestra información del conjunto de caracteres/NLS (Soporte Nacional de Lenguaje) utilizado en Cliente y Servidor}
3936 { Por favor edita los datos de conexión primero: nombre usuario, contraseña, nombre de servidor y base de datos. }
4037
4138 {$mode objfpc}{$H+}
4239
4340 uses {$IFDEF UNIX} {$IFDEF UseCThreads}
4441 cthreads, {$ENDIF} {$ENDIF}
4542 Classes,
4643 SysUtils,
4744 sqldb,
4845 oracleconnection;
4946
5047 var
5148 Col: integer;
5249 Conn: TOracleConnection; { para la conexión }
5350 Tran: TSQLTransaction; { para la transacción }
5451 Q: TSQLQuery; { para la query o consulta }
5552 begin
5653 Conn := TOracleConnection.Create(nil); { Creamos Conexión reservando recursos }
5754 Tran := TSQLTransaction.Create(nil); {Creamos Transacción reservando recursos}
5855 Q := TSQLQuery.Create(nil); { Creamos consulta reservando recursos }
5956 try
6057 // * EDITAR INFORMACIÓN DE IDENTIFICACIÓN SEGÚN SEA NECESARIO *
6158 Conn.HostName := ''; { HostName: nombre del equipo al que conectamos }
6259 Conn.UserName := 'system'; { UserName: usuario de BB.DD con el que nos validamos }
6360 Conn.Password := ''; { Password: contraseña del usuario para conectar a la BB.DD }
6461 Conn.DatabaseName := 'XE'; { DatabaseName: nombre de la base de datos (BB.DD)a la que conectamos dentro del servidor }
6562 // * FIN INFORMACIÓN DE IDENTIFICACIÓN *
6663 Conn.Transaction := Tran;
6764 Q.DataBase := Conn; { Pasamos los datos de conexión a la Query }
6865 Conn.Open; { Abrimos conexión }
6966 Tran.Active := true;
7067
7168 writeln('Información del conjunto de caracteres del Servidor:');
7269 Q.SQL.Text := 'SELECT value$ FROM sys.props$ WHERE name like ''NLS_%'' ';
7370 Q.Open;
7471 Q.First;
7572 while not (Q.EOF) do { Mientras la query no nos devuelva final hacer esto... }
7673 begin
7774 writeln('*****************');
7875 for Col := 0 to Q.Fields.Count - 1 do { desde columna 0 hasta cuenta de campos-1...}
7976 begin
8077 try
8178 writeln(Q.Fields[Col].DisplayLabel + ':'); { Imprimimos en pantalla la etiqueta del campo con índice Col }
8279 writeln(Q.Fields[Col].AsString); { Imprimimos en pantalla el campo con índice Col de la query, retornado como cadena }
8380 except
8481 writeln('Error solicitando campo ', Col);
8582 end;
8683 end;
8784 Q.Next;
8885 end;
8986 Q.Close;
9087
9188 writeln('');
9289 writeln('Información del conjunto de caracteres del cliente:');
9390 Q.SQL.Text := 'SELECT * FROM NLS_SESSION_PARAMETERS ';
9491 Q.Open;
9592 Q.First;
9693 while not (Q.EOF) do
9794 begin
9895 writeln('*****************');
9996 for Col := 0 to Q.Fields.Count - 1 do
10097 begin
10198 try
10299 writeln(Q.Fields[Col].DisplayLabel + ':');
103100 writeln(Q.Fields[Col].AsString);
104101 except
105102 writeln('Error solicitando campo ', Col);
106103 end;
107104 end;
108105 Q.Next;
109106 end;
110107 Q.Close;
111108 // *FIN DE CÓDIGO DE EJEMPLO DE TESTEO DE ERROR*
112109 Conn.Close; { Cerramos la conexión }
113110 finally
114111 Q.Free; { Liberamos los recursos de la query }
115112 Tran.Free; { Liberamos los recursos de la transacción }
116113 Conn.Free; { Liberamos los recursos de la conexión }
117114 end;
118115 writeln('Programa completado. Presiona cualquier tecla para continuar.');
119116 readln;
120117 end.
121118```
122119
123120### ORA-00911 : invalid character
124121
125122   Si visualizas este mensaje de error (o su equivalente en español (carácter no válido), puedes probar lo siguiente:
126123
127124- Suprimiendo el punto y coma - ; - si lo has puesto en una sentencia SELECT.
128125- Añadiendo el punto y coma (e.g. en sentencias CALL o EXECUTE)
129126
130127   Ver este hilo que se aplica a .Net pero que se puede aplicar también a SQLDB: [1](http://social.msdn.microsoft.com/Forums/en/adodotnetdataproviders/thread/58a27505-a3fb-4cb1-9063-3946b3f26acd)
131128
132129   Volver a [[Package List|Packages List]]
133130
134131---
135132*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](/wiki-contact).*

Back to history