Previous fix for Oracle CLOBS was not properly applied

Issue #248 resolved
Todd Flora created an issue

We had requested a previous fix to the Sql.Generators.Oracle file to handle Clob values which you applied to the code base, but unfortunately a small change to our fix was made when it was applied and now there is an error in the datatype that is returned for CLOBS where we are getting a BLOB and not a CLOB. Please take a look at this method and notice that ftOraBlob is specified but ftOraClob should be specified.

function TOracleSQLGenerator.CreateParam(const paramField: TSQLParamField;
  const value: TValue): TDBParam;
var
  v: TValue;
begin
  Result := inherited CreateParam(paramField, value);

  // workaround for FireDAC issue
  if Assigned(paramField.Column) and (paramField.Column.Length > 2000) then
  begin
    if IsNullable(value.TypeInfo) then
      v := value.GetNullableValue
    else
      v := value;

    if v.IsEmpty or (v.IsString and (v.AsString = '')) then
      TOracleDBParam(Result).fParamType := ftOraClob  <-- Should be Clob not Blob
    else
      TOracleDBParam(Result).fParamType := ftWideMemo;
  end;
end;

Please not Original Issue #166

Comments (2)

  1. Log in to comment