1

我试图运行的代码:

$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 in SQLExecDirect in ...

同一连接上的 SELECT、INSERT、UPDATE 或 DELETE 查询没有其他问题。这是语法错误吗?

4

4 回答 4

6

DB2 的 iSeries 风格不支持 SQL DESCRIBE 语句。相反,您必须查询系统表:

select * from qsys2.columns where table_schema = 'my_schema' and table_name = 'my_table'
于 2008-10-08T19:34:10.560 回答
1

该语句只能嵌入应用程序中。它是一个不能动态准备的可执行语句。它不能在 Java 中指定。

来自 iSeries DB2 SQL 参考。

于 2008-11-03T20:32:28.677 回答
0

对我来说,您似乎需要为语句提供一种返回值“有效令牌:INTO”告诉我的方法。我以前没有使用过 DESCRIBE,但我想它会返回一些东西。

Interactive SQL 不允许使用该命令,因此我无法为您提供更多帮助。

顺便说一句,将 iSeries 标签添加到您的问题中。这样你可能会得到更多的答案。

于 2008-09-30T17:48:41.283 回答
0

如果您只需要列名,请尝试

select * from <TABLE> where 0 = 1

我不知道如何获取列类型、索引、键等

于 2008-10-06T10:57:13.007 回答