Difference between revisions of "Oracle/es"

From Free Pascal wiki
Jump to navigationJump to search
Line 23: Line 23:
 
{{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|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}}
  
== Troubleshooting ==
+
== Resolución de problemas ==
=== Client and server character sets ===
+
=== Conjuntos de caracteres para Cliente y Servidor ===
 
To get info about what character set/NLS settings are active, you can run the following program.
 
To get info about what character set/NLS settings are active, you can run the following program.
 
+
Podemos arrancar el siguiente programa para obtener información sobre que conjunto de caracteres/NLS se encuentran activos.
Please don't forget to fill out correct server name, username, password and database name before compiling.
+
Por favor, no olvides rellenar correctametne los datos de nombre de servidor, nombre de base de datos, nombre de usuario y contraseña antes de compilar.  
  
 
<syntaxhighlight>
 
<syntaxhighlight>
 
program oracharset;
 
program oracharset;
  
{ Shows client and server character set/NLS info}
+
{ Muestra información del conjunto de caracteres/NLS (Soporte Nacional de Lenguaje) utilizado en Cliente y Servidor}
{ PLEASE EDIT PASSWORDS ETC BELOW. }
+
{ Por favor edita los datos de conexión primero: nombre usuario, contraseña, nombre de servidor y base de datos. }
  
 
{$mode objfpc}{$H+}
 
{$mode objfpc}{$H+}
Line 54: Line 54:
 
   Q := TSQLQuery.Create(nil);
 
   Q := TSQLQuery.Create(nil);
 
   try
 
   try
     // * EDIT IDENTIFYING INFO AS NEEDED*
+
     // * EDITAR INFORMACIÓN DE IDENTIFICACIÓN SEGÚN SEA NECESARIO *
     Conn.HostName := '';
+
     Conn.HostName := '';             { HostName: nombre del equipo al que conectamos }
     Conn.UserName := 'system';
+
     Conn.UserName := 'system';       { UserName: usuario de BB.DD con el que nos validamos }   
     Conn.Password := '';
+
     Conn.Password := '';             { Password: contraseña del usuario para conectar a la BB.DD }
     Conn.DatabaseName := 'XE';
+
     Conn.DatabaseName := 'XE';       { DatabaseName: nombre de la base de datos (BB.DD)a la que conectamos dentro del servidor }
     // *END IDENTIFIYING INFO*
+
     // * FIN INFORMACIÓN DE IDENTIFICACIÓN *
 
     Conn.Transaction := Tran;
 
     Conn.Transaction := Tran;
 
     Q.DataBase := Conn;
 
     Q.DataBase := Conn;
Line 65: Line 65:
 
     Tran.Active := true;
 
     Tran.Active := true;
  
     writeln('Server character set info:');
+
     writeln('Información del conjunto de caracteres del Servidor:');
 
     Q.SQL.Text := 'SELECT value$ FROM sys.props$ WHERE name like ''NLS_%'' ';
 
     Q.SQL.Text := 'SELECT value$ FROM sys.props$ WHERE name like ''NLS_%'' ';
 
     Q.Open;
 
     Q.Open;
Line 78: Line 78:
 
           writeln(Q.Fields[Col].AsString);
 
           writeln(Q.Fields[Col].AsString);
 
         except
 
         except
           writeln('Error retrieving field ', Col);
+
           writeln('Error solicitando campo ', Col);
 
         end;
 
         end;
 
       end;
 
       end;
Line 86: Line 86:
  
 
     writeln('');
 
     writeln('');
     writeln('Client character set info:');
+
     writeln('Información del conjunto de caracteres del cliente:');
 
     Q.SQL.Text := 'SELECT * FROM NLS_SESSION_PARAMETERS ';
 
     Q.SQL.Text := 'SELECT * FROM NLS_SESSION_PARAMETERS ';
 
     Q.Open;
 
     Q.Open;
Line 99: Line 99:
 
           writeln(Q.Fields[Col].AsString);
 
           writeln(Q.Fields[Col].AsString);
 
         except
 
         except
           writeln('Error retrieving field ', Col);
+
           writeln('Error solicitando campo ', Col);
 
         end;
 
         end;
 
       end;
 
       end;
Line 105: Line 105:
 
     end;
 
     end;
 
     Q.Close;
 
     Q.Close;
     // *END EXAMPLE BUG TESTING CODE*
+
     // *FIN DE CÓDIGO DE EJEMPLO DE TESTEO DE ERROR*
 
     Conn.Close;
 
     Conn.Close;
 
   finally
 
   finally
Line 112: Line 112:
 
     Conn.Free;
 
     Conn.Free;
 
   end;
 
   end;
   writeln('Program complete. Press a key to continue.');
+
   writeln('Programa completado. Presiona cualquier tecla para continuar.');
 
   readln;
 
   readln;
 
end.
 
end.
Line 118: Line 118:
  
 
=== ORA-00911 : invalid character ===
 
=== ORA-00911 : invalid character ===
If you see this error message, you might want to try
 
* removing a trailing semicolon - ; - if you have it in a SELECT statement
 
* adding a trailing semicolon (e.g. in CALL or EXECUTE statements)
 
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]
 
  
Go back to [[Package_List|Packages List]]
+
Si visualizas este mensaje de error (o su equivalente en español (carácter no válido), puedes probar lo siguiente:
 +
 
 +
* Suprimiendo el punto y coma - ; - si lo has puesto en una sentencia SELECT.
 +
* Añadiendo el punto y coma (e.g. en sentencias CALL o EXECUTE)
 +
 
 +
 
 +
Ver este hilo que se aplica a .Net pero que se puede aplicar también a SQLDB: [http://social.msdn.microsoft.com/Forums/en/adodotnetdataproviders/thread/58a27505-a3fb-4cb1-9063-3946b3f26acd]
 +
 
 +
Volver a [[Package_List|Packages List]]
  
 
{{LCL Components Footer |TPQTEventMonitor|TODBCConnection}}
 
{{LCL Components Footer |TPQTEventMonitor|TODBCConnection}}

Revision as of 11:03, 7 May 2015

Interface de bajo nivel del Servidor de BBDD Oracle

La interface 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 interface Oracle.

Hay dos programas de ejemplo:

  • oraclew contiene algunas rutinas para el interface Oracle, para un manejo más fácil del conjunto resultante. Necesita la unidad classes del FCL.
  • test01 es un simple programa para demostrar la interface.

OOP access to 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

Lazarus also has a component:

sqldbcomponents.png

  • 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:
    • instance/SID of the Oracle server you want to connect to or
    • net service name in a TNSNAMES.ORA file
Light bulb  Nota: 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

Resolución de problemas

Conjuntos de caracteres para Cliente y Servidor

To get info about what character set/NLS settings are active, you can run the following program. Podemos arrancar el siguiente programa para obtener información sobre que conjunto de caracteres/NLS se encuentran activos. Por favor, no olvides rellenar correctametne los datos de nombre de servidor, nombre de base de datos, nombre de usuario y contraseña antes de compilar.

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;
  Tran: TSQLTransaction;
  Q: TSQLQuery;
begin
  Conn := TOracleConnection.Create(nil);
  Tran := TSQLTransaction.Create(nil);
  Q := TSQLQuery.Create(nil);
  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;
    Conn.Open;
    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
    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;

    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;
  finally
    Q.Free;
    Tran.Free;
    Conn.Free;
  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:

  • Suprimiendo el punto y coma - ; - si lo has puesto en una sentencia SELECT.
  • Añadiendo el punto y coma (e.g. en sentencias CALL o EXECUTE)


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

Volver a Packages List


Return To: LCL Components  — Previous: TPQTEventMonitor Next: TODBCConnection


LCL Components
Component Tab Components
Standard TMainMenu • TPopupMenu • TButton • TLabel • TEdit • TMemo • TToggleBox • TCheckBox • TRadioButton • TListBox • TComboBox • TScrollBar • TGroupBox • TRadioGroup • TCheckGroup • TPanel • TFrame • TActionList
Additional TBitBtn • TSpeedButton • TStaticText • TImage • TShape • TBevel • TPaintBox • TNotebook • TLabeledEdit • TSplitter • TTrayIcon • TControlBar • TFlowPanel • TMaskEdit • TCheckListBox • TScrollBox • TApplicationProperties • TStringGrid • TDrawGrid • TPairSplitter • TColorBox • TColorListBox • TValueListEditor
Common Controls TTrackBar • TProgressBar • TTreeView • TListView • TStatusBar • TToolBar • TCoolBar • TUpDown • TPageControl • TTabControl • THeaderControl • TImageList • TPopupNotifier • TDateTimePicker
Dialogs TOpenDialog • TSaveDialog • TSelectDirectoryDialog • TColorDialog • TFontDialog • TFindDialog • TReplaceDialog • TTaskDialog • TOpenPictureDialog • TSavePictureDialog • TCalendarDialog • TCalculatorDialog • TPrinterSetupDialog • TPrintDialog • TPageSetupDialog
Data Controls TDBNavigator • TDBText • TDBEdit • TDBMemo • TDBImage • TDBListBox • TDBLookupListBox • TDBComboBox • TDBLookupComboBox • TDBCheckBox • TDBRadioGroup • TDBCalendar • TDBGroupBox • TDBGrid • TDBDateTimePicker
Data Access TDataSource • TCSVDataSet • TSdfDataSet • TBufDataset • TFixedFormatDataSet • TDbf • TMemDataset
System TTimer • TIdleTimer • TLazComponentQueue • THTMLHelpDatabase • THTMLBrowserHelpViewer • TAsyncProcess • TProcessUTF8 • TProcess • TSimpleIPCClient • TSimpleIPCServer • TXMLConfig • TEventLog • TServiceManager • TCHMHelpDatabase • TLHelpConnector
Misc TColorButton • TSpinEdit • TFloatSpinEdit • TArrow • TCalendar • TEditButton • TFileNameEdit • TDirectoryEdit • TDateEdit • TTimeEdit • TCalcEdit • TFileListBox • TFilterComboBox • TComboBoxEx • TCheckComboBox • TButtonPanel • TShellTreeView • TShellListView • TXMLPropStorage • TINIPropStorage • TJSONPropStorage • TIDEDialogLayoutStorage • TMRUManager • TStrHolder
LazControls TCheckBoxThemed • TDividerBevel • TExtendedNotebook • TListFilterEdit • TListViewFilterEdit • TLvlGraphControl • TShortPathEdit • TSpinEditEx • TFloatSpinEditEx • TTreeFilterEdit • TExtendedTabControl •
RTTI TTIEdit • TTIComboBox • TTIButton • TTICheckBox • TTILabel • TTIGroupBox • TTIRadioGroup • TTICheckGroup • TTICheckListBox • TTIListBox • TTIMemo • TTICalendar • TTIImage • TTIFloatSpinEdit • TTISpinEdit • TTITrackBar • TTIProgressBar • TTIMaskEdit • TTIColorButton • TMultiPropertyLink • TTIPropertyGrid • TTIGrid
SQLdb TSQLQuery • TSQLTransaction • TSQLScript • TSQLConnector • TMSSQLConnection • TSybaseConnection • TPQConnection • TPQTEventMonitor • TOracleConnection • TODBCConnection • TMySQL40Connection • TMySQL41Connection • TMySQL50Connection • TMySQL51Connection • TMySQL55Connection • TMySQL56Connection • TMySQL57Connection • TSQLite3Connection • TIBConnection • TFBAdmin • TFBEventMonitor • TSQLDBLibraryLoader
Pascal Script TPSScript • TPSScriptDebugger • TPSDllPlugin • TPSImport_Classes • TPSImport_DateUtils • TPSImport_ComObj • TPSImport_DB • TPSImport_Forms • TPSImport_Controls • TPSImport_StdCtrls • TPSCustomPlugin
SynEdit TSynEdit • TSynCompletion • TSynAutoComplete • TSynMacroRecorder • TSynExporterHTML • TSynPluginSyncroEdit • TSynPasSyn • TSynFreePascalSyn • TSynCppSyn • TSynJavaSyn • TSynPerlSyn • TSynHTMLSyn • TSynXMLSyn • TSynLFMSyn • TSynDiffSyn • TSynUNIXShellScriptSyn • TSynCssSyn • TSynPHPSyn • TSynTeXSyn • TSynSQLSyn • TSynPythonSyn • TSynVBSyn • TSynAnySyn • TSynMultiSyn • TSynBatSyn • TSynIniSyn • TSynPoSyn
Chart TChart • TListChartSource • TRandomChartSource • TUserDefinedChartSource • TCalculatedChartSource • TDbChartSource • TChartToolset • TChartAxisTransformations • TChartStyles • TChartLegendPanel • TChartNavScrollBar • TChartNavPanel • TIntervalChartSource • TDateTimeIntervalChartSource • TChartListBox • TChartExtentLink • TChartImageList
IPro TIpFileDataProvider • TIpHtmlDataProvider • TIpHttpDataProvider • TIpHtmlPanel
Virtual Controls TVirtualDrawTree • TVirtualStringTree • TVTHeaderPopupMenu