Oci_bind_by_name() для змінних Оракл типу DATE, PHPClub - клуб розробників PHP
Запит до БД: підсумувати дані за інтервал часу (дані погодинки). Хотів зробити парсинг, а потім у циклі биндити інтервали часу та виконувати, биндити та виконувати. тобто. парсинг один раз, а виконуватиме стільки скільки інтервалів. Якщо написати запит так: $q= "select sum(V) as VS from (SELECT distinct trunc(dt,'hh') as H, VALUE as V FROM schem.table WHERE DT BETWEEN TO_DATEtbegin,'DD-MM-YYYY HH24:MI:SS') AND TO_DATEtend,'DD-MM-YYYY HH24:MI:SS'))";
,то після (перед цим, звичайно, парс $stmt = oci_parse($c,$q) :
- Отримаємо в запиті дату без одиночних лапок, як я розумію. Приблизно так: select sum(V) as VS from (SELECT distinct trunc(dt,'hh') as H, VALUE as V FROM schem.table WHERE DT BETWEEN TO_DATE(01-01-2011 01:00:00,'DD-MM-YYYY HH24:MI:SS') AND TO_DATE(01-02-2011 00 :59:59,'DD-MM-YYYY HH24:MI:SS')) На це Оракл, природно, обурюється, дорікаючи мені в неправильному типі даних.
Але якщо поставити злощасні лапки на запит: $q= "select sum(V) as VS from (SELECT distinct trunc(dt,'hh') as H, VALUE as V FROM schem.table WHERE DT BETWEEN TO_DATE(':tbegin','DD-MM-YYYY HH24:MI:SS') AND TO_DATE(':tend','DD-MM-YYYY HH24:MI:SS'))";
То вискакує попередження: Warning: oci_bind_by_name() [function.oci-bind-by-name]: ORA-01036: illegal variable name/number in script.php on line 94 Що в перекладі українською означає: "Оракл не знайшов змінну (ім'я інше у змінної)". Наскільки я розумію, у лапках змінна стає невидимою для Оракла (і РНР?).
Чи можна якось подолати це непорозуміння, чи "забити" - тупо формувати рядок запиту з ужепідставленими заняттями дати та на кожній ітерації парсити запит?