【问题标题】:php + unixODBC + DB2 + DESCRIBE = token not valid?php + unixODBC + DB2 + DESCRIBE = 令牌无效?
【发布时间】:2010-09-14 07:30:00
【问题描述】:
我正在尝试运行的代码:
$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 in SQLExecDirect in ...
在同一连接上的 SELECT、INSERT、UPDATE 或 DELETE 查询没有其他问题。这是语法错误吗?
【问题讨论】:
标签:
php
db2
ibm-midrange
unixodbc
db2-400
【解决方案1】:
DB2 的 iSeries 风格不支持 SQL DESCRIBE 语句。相反,您必须查询系统表:
select * from qsys2.columns where table_schema = 'my_schema' and table_name = 'my_table'
【解决方案2】:
此语句只能嵌入应用程序中。它是一个不能动态准备的可执行语句。不得在 Java 中指定。
来自 iSeries DB2 SQL 参考。
【解决方案3】:
对我来说,您似乎需要为语句提供一种返回值的方法“有效令牌:INTO”告诉我。我以前没有使用过 DESCRIBE,但我想它会返回一些东西。
Interactive SQL 不允许使用该命令,因此我无法为您提供更多帮助。
顺便说一句,将 iSeries 标签添加到您的问题中。这样你可能会得到更多的答案。
【解决方案4】:
如果你只需要列名试试
select * from <TABLE> where 0 = 1
我不知道如何获取列类型、索引、键等