В настоящее время я работаю над проектом, который использует библиотеку ADODB PHP 5.20.9 (последняя версия)
В большинстве случаев все работает как положено, но я не могу использовать функции БД внутри запроса вставки, который сделан с подготовленными этапами.
Как пример, sequence.nextval инструкция обрабатывается как строка и кажется, что
передается ORACLE в виде строки вместо функции, которая должна быть вызвана.
Ниже приведен полный пример для воспроизведения ошибки:
--Table creation
CREATE TABLE TEST_DATA
("PK" VARCHAR2(100),
"TESTNOTE" VARCHAR(100),
"TESTDATE" DATE
)
)
--Sequence creation
CREATE SEQUENCE SEQ_TEST_TABLE
INCREMENT BY 1 MINVALUE 1
CACHE 20 NOCYCLE//PHP code example, require include for ADODB library
$bindVariables = array('PK' => 'SEQ_TEST_TABLE.nextval',
'TESTNOTE' => 'SOME INFORMATIONS',
'TESTDATE' => 'SYSDATE');
$insertQuery = "INSERT INTO TEST_TABLE (PK, TESTNOTE, TESTDATE)
VALUES (:PK, :TESTNOTE)";
try {
$result = $dbDbi->execute($insertQuery,$bindVariables);
} catch(Exception $e) {
echo $e->getMessage();
}
Весь код будет выполнен без ошибок, но внутри поля PK я нашел SEQ_TEST_TABLE.nextval вместо ожидаемого числового значения
Задача ещё не решена.
Других решений пока нет …