我正在测试 Progress OpenEdge 应用程序中的一项功能,该应用程序将数据加载到数据库表中。我正在测试的表中的许多字段都被我们的应用程序限制为 256 个字符,所以我正在做一些边缘情况测试,尝试加载小于、等于和大于 256 个字符的条目。数据加载后,我查询数据库并验证结果。我正在通过测试程序 TestComplete 为 ODBC 驱动程序使用 OLE DB 提供程序。这是我正在使用的查询:
SELECT SUBSTRING(lname, 1, 30)
FROM pub.referral
WHERE lname LIKE 'valid%'
在我运行测试之前,ODBC 驱动程序对此查询没有任何问题。但是,在我运行它之后,该表中的某些字段有 256 个字符,并且 ODBC 驱动程序对该长度的数据存在问题。我想通过使用来避免这种情况SUBSTRING
,但是当我尝试使用这个查询时,我仍然得到一个验证错误:
The specified query is invalid. Database engine reports: [DataDirect][ODBC Progress OpenEdge Wire Protocol driver]Error in row
内容丰富!当表中的数据比 ODBC 喜欢的长时,这就是我通常看到的错误。但奇怪的是,如果我去掉该WHERE
子句,查询会验证并返回 30 个字符块中的数据,就像我在SUBSTRING
.
发生这种情况是因为我的字段中的字符比 ODBC 驱动程序预期的要多,还是因为与子句有关的其他事情WHERE
(语法不正确等?)我该如何解决这个问题?我想在不通过 dbtool 更改设置的情况下执行此操作 - 拥有数据库中的特定设置对我来说很重要,这样我的测试才能准确。