Firedac, a oracle-quote-operator. Jak to obejść?

0

Witajcie,

Mam problem z TFDScript.

Ładuję mu dane z pliku:

qScript.SQLScripts[qScript.SQLScripts.Count-1].SQL.LoadFromFile(FFilList[k].value,TEncoding.UTF8);

następnie execute i w 99% działa.

Sęk w tym, że mam pakiet, a w nim funkcja, którego kod wygląda mniej więcej tak:

FUNCTION f_klienci_sprzedaz
  RETURN NUMBER
  IS
BEGIN
   query_ := q'[SELECT   nazwa_klienta ....]';
   ...
end;

To po wywołaniu
qScript.ExecuteAll;

na bazie wygląda to tak:

FUNCTION f_klienci_sprzedaz
  RETURN NUMBER
  IS
BEGIN
   query_ := 'SELECT   nazwa_klienta ....';
   ...
end;

macie pomysł skąd taka podmiana ? Jak zmusić TFScript aby wgrał mi na bazę to dokładnie w takiej formie w jakiej ma to w pliku?

EDIT:
Co powiecie na to:
https://community.embarcadero.com/index.php/forum/data/616-firedac-oracle-quote-operator

jest jakieś obejście?

0

co do cudzysłowu, to jeśli chcesz go użyć w zapytaniach to wpisujesz go potrójnie.
np.

zapytanie : = ' select * from Tabela where Nazwa = '''+edtNazwa.Text+''' ';
0

Nie musze tego robić bo właśnie firedac to robi ale ja tego nie chce. Chce wgrać skrypt tak jak jest zapisany w pliku z q'[...]

Sprawdziłem zeoslib i w zeosach to działa dobrze

1

Dobra mam błąd znam rozwiązanie, zgłosiłem do Embarcadero i puszczą poprawkę do 11.3 :)

We had our FireDAC Product Manager look at this issue, and here is the workaround solution:

If the customer needs a fast workaround fix, then apply these steps:

  • open FireDAC.Phys.OracleWrapper.pas
  • locate TOCIEnv.InitEnvBase method
  • find and comment lines:
    if Lib.Version >= cvOracle102000 then
    iMode := iMode or OCI_NCHAR_LITERAL_REPLACE_ON;

Embarcadero plans to add this fix in RAD Studio 11 Update 3.

działa :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1