php + unixODBC + DB2 + DESCRIBE = токен недействителен?

Код, который я пытаюсь запустить:

$query = "DESCRIBE TABLE TABLENAME";
$result = odbc_exec($h, $query);

Результат:

Предупреждение PHP: odbc_exec(): ошибка SQL: [unixODBC][IBM][драйвер ODBC для iSeries Access][DB2 UDB]SQL0104 — маркер TABLENAME недействителен. Действительные токены: INTO., состояние SQL 37000 в SQLExecDirect в ...

Других проблем с запросами SELECT, INSERT, UPDATE или DELETE на том же соединении не было. Это синтаксическая ошибка?


person tpk    schedule 30.09.2008    source источник


Ответы (4)


Разновидность iSeries DB2 не поддерживает оператор SQL DESCRIBE. Вместо этого вы должны запросить системную таблицу:

select * from qsys2.columns where table_schema = 'my_schema' and table_name = 'my_table'
person Ian McLaird    schedule 08.10.2008
comment
Большое спасибо за этот пример. Вы случайно не знаете, как получить описания полей? - person K Richard; 15.07.2010

Этот оператор может быть встроен только в прикладную программу. Это исполняемый оператор, который не может быть подготовлен динамически. Это не должно быть указано в Java.

Из Справочника по SQL iSeries DB2.

person Paul Morgan    schedule 03.11.2008

Мне кажется, что вам нужно предоставить способ, чтобы оператор возвращал значение «Действительные токены: INTO», говорит мне об этом. Я раньше не использовал DESCRIBE, но думаю, что он что-то возвращает.

Интерактивный SQL не позволяет эту команду, поэтому я не могу вам больше помочь.

Кстати, добавьте к своему вопросу тег iSeries. Таким образом, вы можете получить еще несколько ответов.

person Mike Wills    schedule 30.09.2008

Если вам просто нужны имена столбцов, попробуйте

select * from <TABLE> where 0 = 1

Я не знаю, как получить типы столбцов, индексы, ключи и т. д.

person pmg    schedule 06.10.2008