tiny ‘n’ smart
database layer

Odkazy: dibi | API reference

Oznámení

Omlouváme se, provoz fóra byl ukončen

Oracle: uvozovky ve vnořeném SQL dotazu

před 6 lety

radas
Člen | 210

dibi 2.1.0

Ahoj,
pokud mám vnořený SQL dotaz, tak se u něj všechny sloupce, název tabulky apod. uvozují jen jednoduchými uvozovkami namísto dvojitými.

Příklad:

$connection->select(array('ITEM', 'VALUE'))
  ->from('CONFIG_DEFAULT')
  ->where('[ITEM] NOT IN (%sql)', $connection->select('[ITEM]')
    ->from('CONFIG')
    ->where('[ID] = %i', 2)
    ->__toString()
  )
  ->test();

vypíše

SELECT "ITEM", "VALUE"
FROM "CONFIG_DEFAULT"
WHERE "ITEM" NOT IN (
SELECT 'ITEM'
FROM 'CONFIG'
WHERE 'ID' = 2)

což při spuštění způsobí chybu ORA-00903: neplatný název tabulky.

před 6 lety

Milo
Nette Core | 1119

Používej %SQL. %sql se escapuje, ale DibiFluent je už oescapovaný.

před 6 lety

radas
Člen | 210

Díky Milo, máš pravdu, teď už to funguje správně.