SQLテキストファイルを読み込んでSybaseASE12.51に送信する古いアプリケーションがあります。従来のアプリはDelphi5で作成されており、このプロセスにBDE TQueryコンポーネントを使用し、BDE SQLinksforSybaseを使用してSybaseにアクセスしています。
擬似コード:
SQLText=readSQLFile;
aTQuery.SQL.add(SQLText);
aTQuery.ExecSQL;
最近、DBアクセスレイヤーをDelphi XE ADO実装に移動しました。TADOQueryは、Sybaseが提供するADOプロバイダーを使用し、引き続き同じモデルを使用しています。
SQLText=readSQLFile;
aTADOQuery.SQL.add(SQLText)
aTADOQuery.ExecSQL;
ADOに移行した後、特定のデータが欠落していることがわかりました。このSQL構造の失敗を追跡しました。
Select myColumn from myTable
Where tranID = null
この構成はせいぜい意味的に疑わしいことを知っているので、このコードを見たときに「ダブルテイク」を実行しましたが、Sybase 12.5はそれを受け入れますが、ADOを使用すると、このセグメントは失敗します。
変更することにしました:
Where tranID = null
に
Where tranID is null
次に、欠落しているデータがロードされました。このセグメントと他のいくつかのセグメントについても、問題は解決されました。
誰かがこの振る舞いについて説明がありますか?BDEが通過したのに、ADOがこのシーケンスをインターセプトして拒否したのはなぜですか?
TIA