I found some strange behaviour with UniDAC.
I have a TCustomUniDataSet query on Oracle with parameters.
I used, let say, parameter P0, which was defined as a Delphi constant 191.
Thus Delphi assigned the Byte type for this constant since it's lower than 256.
Code: Select all
MyConstantByte = 191; // Delphi type Byte
MyConstantInteger : Integer = 191; // Delphi type Integer
But when I used MyConstantInteger, the query was done right.
My original code for my query :
Code: Select all
function MyUniQuery(UniTable : TCustomUniDataSet; QueryText : String;
Values : Array of Variant; RunQuery : Boolean = True) : Boolean;
var I : Integer;
begin
Result := False;
UniTable.Params.Clear;
UniTable.SQL.Text := QueryText;
for I := 0 to UniTable.Params.Count - 1 do
begin
UniTable.Params[I].Value := Values[I];
end;
if RunQuery then
begin
UniTable.Open;
UniTable.First;
if not UniTable.Eof then Result := True;
end;
end;
Code: Select all
function MyUniQuery(UniTable : TCustomUniDataSet; QueryText : String;
Values : Array of Variant; RunQuery : Boolean = True) : Boolean;
var I : Integer;
begin
Result := False;
UniTable.Params.Clear;
UniTable.SQL.Text := QueryText;
for I := 0 to UniTable.Params.Count - 1 do
begin
if VarType(Values[I]) = varByte
then Values[I] := Integer(Values[I]);
UniTable.Params[I].Value := Values[I];
end;
if RunQuery then
begin
UniTable.Open;
UniTable.First;
if not UniTable.Eof then Result := True;
end;
end;
Thank you for your response.