データを DB テーブルにロードする Progress OpenEdge アプリケーションの機能をテストしています。私がテストしているテーブルのフィールドの多くは、アプリケーションによって 256 文字に制限されているため、いくつかのエッジ ケース テストを行って、256 文字より小さい、等しい、またはより大きいエントリをロードしようとしています。データのロード後、DB にクエリを実行し、結果を検証します。テスト プログラム 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
句を削除すると、SUBSTRING
.
これは、フィールドに ODBC ドライバーが想定するよりも多くの文字があるためですか、それとも句に関連する何かWHERE
(構文が正しくないなど) のためですか? どうすれば回避できますか? dbtool を使用して設定を変更せずにこれを実行したいと考えています。テストを正確に行うには、DB に特定の設定を行うことが重要です。