Possible bug?

Discussion of open issues, suggestions and bugs regarding usage of dbExpress drivers for Oracle in Delphi and C++Builder
Post Reply
PontusAtNilex
Posts: 16
Joined: Wed 03 Nov 2004 13:25

Possible bug?

Post by PontusAtNilex » Thu 04 Nov 2004 10:34

Hello!

We are migrating our application from BDE to DbExpress, and we are using your excellent SQL Server and Oracle DbExpress drivers :)

For the last couple of days i've worked with a tricky bug, in short, the update query that is being generated by an applyupdates is corrupt for oracle, but it succeeds for SQL Server , and it is exactly the same code that executes.

And the problem is that the function
SQLConnection.GetFieldNames(TableName, FieldList) returns the fieldnames in the SQL Server case , but not in the Oracle case, then we get an empty string.

When we use SQLTable.GetFieldNames(FieldList) we get a correct FieldList from both Oracle and SQL Server.

Don't know if this is a bug in Delphi or in your Oracle driver, just wanted to mention it!

We are developing in Delphi 6, update pack 2. Using SQL Server Dbexpress driver 2.0 and Oracle DbExpress driver 2.10.0

//Pontus

Paul
Posts: 725
Joined: Thu 28 Oct 2004 14:06

Post by Paul » Fri 05 Nov 2004 14:20

1. Update SQL is generated by SQLExpress (See TSQLResolver.GenUpdateSQL). Please
specify what type of fields you have and what SQL is generated. I suppose we can find
a decision for your particular problem. Please compare results with standard Oracle
dbExpress driver.

2. You must pass table name without indicating schema to GetFieldNames. By default,
schema name coincides with user name. You can change schema name using
SQLConnection1.MetaData property.

Code: Select all

var
  L: TStringList;
begin
  L:=TStringList.Create;
  try
    SQLConnection1.Open;
    SQLConnection1.MetaData.SetOption(eMetaSchemaName, LongInt(PChar('SYS')));
    SQLConnection1.GetFieldNames('NLS_DATABASE_PARAMETERS', L);
  finally
    L.Free;
  end; 

Post Reply