php + unixODBC + DB2 + DESCRIBE = токен недействителен? - PullRequest
1 голос
/ 30 сентября 2008

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

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

Результат:

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

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

Ответы [ 4 ]

5 голосов
/ 08 октября 2008

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

select * from qsys2.columns where table_schema = 'my_schema' and table_name = 'my_table'
1 голос
/ 03 ноября 2008

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

Из справочника по SQL Server iSeries.

0 голосов
/ 06 октября 2008

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

select * from <TABLE> where 0 = 1

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

0 голосов
/ 30 сентября 2008

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

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

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

...