来自 QSYS2.SysTables 的查询返回错误“令牌;无效”

Posted

技术标签:

【中文标题】来自 QSYS2.SysTables 的查询返回错误“令牌;无效”【英文标题】:Query from QSYS2.SysTables returns error "Token; void" 【发布时间】:2013-05-07 05:08:19 【问题描述】:

我正在尝试使用 Excel、VBA 和 ODBC 驱动程序从 AS400 DB 读取数据。连接成功,但没有一个查询正在从数据库中检索数据。例如:选择查询不起作用:

select * from QSYS2.SysTables;

客户端收到以下错误消息:

[IBM] [System i Access ODBC 驱动程序] [DB2 for i5/OS] SQL0104 - 令牌;空白。有效令牌:

我的查询有什么问题?

编辑:我试图从 AS400 读取数据,而不是从 DB2 读取数据。我想从 SysTables(系统表)中读取表名。

【问题讨论】:

您说的是 DB2 数据库还是“AS400 数据库”?请发布您的实际查询,以及您尝试查询的表的架构。一些样本数据也会有所帮助。记住:sscce.org @BryanH AS/400(现在称为 Power Systems 上的 IBM i)将 DB2 集成到操作系统中。 As/400 数据库 DB2。 【参考方案1】:

删除单个语句执行的语句终止字符 (;)。

【讨论】:

嗨詹姆斯,感谢您的回复。我没有直接访问数据库的权限。我删除了 ';'并将应用程序发送给客户端。会尽快通知您状态。 嗨,James,刚收到客户的反馈。删除';'后它工作正常。非常感谢您的回答。 James,我可以为 AS400 使用标准 SQL 吗?或者语法上有什么不同。当我在表的字段名称周围使用 [] 运行查询时,它不会提取任何数据。如果字段名称周围没有方括号,则相同的查询有效。请澄清。 @Sri 数据库是 DB/2 的一个版本。在字段名称周围使用方括号是 TSQL (MSSQL) 约定。 ANSI SQL 使用单引号。如有疑问,请查看文档:V7R1 SQL Reference 非常感谢您的快速回复。【参考方案2】:

这是一个检索查询的示例:

"Select * from Tablename";

如果不起作用,请尝试在 Microsoft 中查看手册进行查询。它不同于标准的 SQL 查询。

【讨论】:

微软??这是 IBM DB2 for i。

以上是关于来自 QSYS2.SysTables 的查询返回错误“令牌;无效”的主要内容,如果未能解决你的问题,请参考以下文章

MFC中的SQL查询语句返回空就报错怎么办?

来自 ODBC Blob 的数据与来自 SQL 查询的返回不匹配

Mybatis 查询返回List<String>集合

当多个 SQL 键时,来自实体框架的循环 SQL 查询返回第一行

学习笔记 MSSQL显错手工注入

update更新一条查询结果