@sflyer

Php+Oracle increment by неверное имя/номер переменной, как написать верно?

$compiled = oci_parse($conn, "alter sequence SQ_TEST increment by :id");
oci_bind_by_name($compiled, ":id", $VAL);
$result =oci_execute($compiled, OCI_DEFAULT);

Есть такой код, который уменьшает значение sequence. Запрос работает без PHP. Проблема в том, что (как я понял) ему не нравится переменная :id. Значение $VAL не пустое.
Как правильно передать значение?
Ошибки:
Warning: oci_bind_by_name(): ORA-01036: неверное имя/номер переменной in /var/www/html/test/new_year.php on line 11
Warning: oci_execute(): ORA-01722: неверное число in /var/www/html/test/new_year.php on line 12
  • Вопрос задан
  • 641 просмотр
Решения вопроса 1
@Dronablo
Oracle performance geek
Согласно доке, он туда подсовывает автоматический тип SQLT_CHR, который будет автоматически приводиться к нужному типу в случае SELECT. Т.к. у вас тут DDL, я думаю что нужно явно указать type=SQLT_INT.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Vapaamies
@Vapaamies
Разработчик будущей ОС для ПК размером 250 МБ
У меня смутные подозрения, что в Oracle нет поддержки связываемых переменных для DDL. Еще можете попробовать задавать "id" без двоеточия в oci_bind_by_name.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы