【问题标题】: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
        

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

        【讨论】:

          猜你喜欢
          • 2016-04-17
          • 2012-06-11
          • 2017-05-30
          • 1970-01-01
          • 2016-12-03
          • 1970-01-01
          • 2012-04-09
          • 2017-03-09
          相关资源
          最近更新 更多