Код, который я пытаюсь запустить:
$query = "DESCRIBE TABLE TABLENAME";
$result = odbc_exec($h, $query);
Результат:
PHP Warning: odbc_exec(): SQL error: [unixODBC][IBM][iSeries Access ODBC Driver][DB2 UDB]SQL0104 - Token TABLENAME was not valid. Valid tokens: INTO., SQL state 37000 in SQLExecDirect in ...
Других проблем с запросами SELECT, INSERT, UPDATE или DELETE в том же соединении не было. Это синтаксическая ошибка?






Мне кажется, что вам нужно предоставить способ, чтобы оператор возвращал значение «Valid tokens: INTO» говорит мне об этом. Я раньше не использовал DESCRIBE, но могу представить, что он что-то возвращает.
Интерактивный SQL не позволяет использовать команду, поэтому я ничем не могу вам помочь.
Кстати, добавьте к своему вопросу тег iSeries. Так вы можете получить еще несколько ответов.
Если вам просто нужны имена столбцов, попробуйте
select * from <TABLE> where 0 = 1
Я не знаю, как получить типы столбцов, индексы, ключи и т. д.
Версия DB2 для iSeries не поддерживает оператор SQL DESCRIBE. Вместо этого вам нужно запросить системную таблицу:
select * from qsys2.columns where table_schema = 'my_schema' and table_name = 'my_table'
This statement can only be embedded in an application program. It is an executable statement that cannot be dynamically prepared. It must not be specified in Java.
Из Справочника по SQL iSeries DB2.
Большое спасибо за этот пример. Вы случайно не знаете, как получить описания полей?