私はかなり長いSQL文を生成するコードをいくつか持っています。このコードは、私がデータベースクエリ関数にパラメータとして書いた書式付きクエリから書かれています。空白まで、2つのクエリはまったく同じです。実際に、生成されたSQLをコピーしてVimで:%s/\s\{2,}/ /g
を適用すると、出力は元のクエリと同じになります(コメントは削除されます)。:%j
に続いて:%s/\s\{2,}/ /g
が適用されます。VBAの奇妙な動的SQL Heysenbug
は実際に、彼らは時間のいくつかの異なる出力を作り出します。クエリツールでこれを調べようとしたところ、VBAで生成されたSQLは期待どおりに動作しませんでした。上記の空白を削除する変換をVBA生成クエリに適用したところ、動作しました。奇妙なのは、もともと生成されたクエリ(余分な空白を含む)が突然動作し始めたことです!しかし、矛盾しています。余分な空白のバージョンが動作することを保証する決定的なパターンはありません。 (私の推測では、これはデータベースサーバの礼儀であるキャッシング現象であるかもしれません)。
とにかく、私の質問は空白に関するものです:私は空白が区切りを超えてSQLに無関係であったという印象を受けました。これは事実ではないのですか?たぶん、生成されたSQL文字列が長すぎます(> 6kb)...任意のアイデアですか?アプリの観点から、より少ない複雑なクエリを作成する
変換は、上記の引用符内の連続した空白文字を削除するだろう、複雑な部分を取ると、アプリから、その後、ビューでそれを埋めるためにありますか?それはあなたが見ているような問題を引き起こすかもしれません。 –
良いと思ったが、恐れてはいない:P – Xophmeister
にはenquoted空白がありません...最終的に、私は、クエリを書き直すことにしました私はDBAの怒りを被らないように、私はその道を踏み出すことを望んでいません! – Xophmeister