Ireruss
Новичок
Запрос к БД: просуммировать данные за интервал времени (данные почасовки).
Хотел сделать парсинг , а потом в цикле биндить интервалы времени и выполнять, биндить и выполнять..., т.е. парсинг один раз, а выполнять столько сколько интервалов.
Если написать запрос так:
$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'))";
,то после (перед этим, естественно, парсим $stmt = oci_parse($c,$q)
:
oci_bind_by_name($stmt,":tbegin",$tb);
oci_bind_by_name($stmt,":tend",$te);
- получим в запросе дату без одиночных кавычек, как я понимаю.
Примерно так:
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
Что в переводе на русский значит: "оракл не нашел переменную ( имя другое у переменной)".
Насколько я понимаю, в кавычках переменная становится невидима для Оракла (и РНР?).
В php.ini:
; - magic_quotes_gpc = Off
(закомментировано)
Пробовал и
magic_quotes_gpc = Off
Можно ли как-то побороть это недоразумение, или "забить" - тупо формировать строку запроса с уже подставленными зачениями даты и на каждой итерации парсить запрос?
Хотел сделать парсинг , а потом в цикле биндить интервалы времени и выполнять, биндить и выполнять..., т.е. парсинг один раз, а выполнять столько сколько интервалов.
Если написать запрос так:
$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

TO_DATE

,то после (перед этим, естественно, парсим $stmt = oci_parse($c,$q)

oci_bind_by_name($stmt,":tbegin",$tb);
oci_bind_by_name($stmt,":tend",$te);
- получим в запросе дату без одиночных кавычек, как я понимаю.
Примерно так:
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
Что в переводе на русский значит: "оракл не нашел переменную ( имя другое у переменной)".
Насколько я понимаю, в кавычках переменная становится невидима для Оракла (и РНР?).
В php.ini:
; - magic_quotes_gpc = Off
(закомментировано)
Пробовал и
magic_quotes_gpc = Off
Можно ли как-то побороть это недоразумение, или "забить" - тупо формировать строку запроса с уже подставленными зачениями даты и на каждой итерации парсить запрос?