php + unixODBC + DB2 + DESCRIBE =令牌无效?

时间:2008-09-30 16:41:25

标签: php db2 ibm-midrange unixodbc db2-400

我正试图运行的代码:

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

结果:

  

PHP警告:odbc_exec():SQL错误:[unixODBC] [IBM] [iSeries Access   ODBC驱动程序] [DB2 UDB] SQL0104 - 令牌TABLENAME无效。有效   令牌:INTO。,SQLExecDirect中的SQL状态37000 ......

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

4 个答案:

答案 0 :(得分:5)

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

select * from qsys2.columns where table_schema = 'my_schema' and table_name = 'my_table'

答案 1 :(得分:1)

  

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

来自iSeries DB2 SQL Reference。

答案 2 :(得分:0)

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

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

顺便说一句,将iSeries标记添加到您的问题中。你可以通过这种方式获得更多答案。

答案 3 :(得分:0)

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

select * from <TABLE> where 0 = 1

我不知道如何获取列类型,索引,键和&lt; c