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

时间:2020-03-06 14:56:00  来源:igfitidea点击:

我正在尝试运行的代码:

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

结果:

PHP Warning:  odbc_exec(): SQL error: [unixODBC][IBM][iSeries Access
  ODBC Driver][DB2 UDB]SQL0104 - Token TABLENAME was not valid. Valid
  tokens: INTO., SQL state 37000 in SQLExecDirect in ...

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

解决方案

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

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

顺便说一句,将iSeries标记添加到问题中。这样我们可能会得到更多答案。

如果我们只需要列名,请尝试

select * from <TABLE> where 0 = 1

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

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

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

This statement can only be embedded in an application program. It is an executable statement that cannot be dynamically prepared. It must not be specified in Java.

来自《 iSeries DB2 SQL参考》。