Код, который я пытаюсь запустить:
$query = "DESCRIBE TABLE TABLENAME"; $result = odbc_exec($h, $query);
Результат:
PHP Предупреждение: odbc_exec (): ошибка SQL: [unixODBC] [IBM] [iSeries Access ODBC Driver] [DB2 UDB] SQL0104 – токен TABLENAME недействителен. Действительные токены: INTO., Состояние SQL 37000 в SQLExecDirect в …
Не было никаких других проблем с запросами SELECT, INSERT, UPDATE или DELETE в том же соединении. Является ли это синтаксической ошибкой?
Ярлык iSeries DB2 не поддерживает инструкцию SQL DESCRIBE. Вместо этого вам нужно запросить системную таблицу:
select * from qsys2.columns where table_schema = 'my_schema' and table_name = 'my_table'
Этот оператор может быть встроен только в прикладную программу. Это исполняемый оператор, который не может быть динамически подготовлен. Он не должен быть указан в Java.
Из справочника SQL SQL iSeries.
Для меня похоже, что вам нужно предоставить способ, чтобы оператор возвращал значение «Valid tokens: INTO». Раньше я не использовал DESCRIBE, но я бы предположил, что он что-то возвращает.
Интерактивный SQL не разрешает команду, поэтому я не могу помочь вам намного дальше.
BTW, добавьте тег iSeries на ваш вопрос. Тогда вы можете получить еще несколько ответов.
Если вам просто нужны имена столбцов, попробуйте
select * from <TABLE> where 0 = 1
Я не знаю, как получить типы столбцов, индексы, ключи и c