VARCHAR列のバッファの順序ではない配列を指す方法を見つけるために、Row-Wise、Column-Wise、戻る。ODBCバインドされたパラメータを使用してVARCHARの長さを事前に決定するC++
戻り値は10文字または8000である可能性があります。私は8000 x nRowsバイトのメモリを割り当てたいとは思わないので、これをより良くする方法を試しています。
最初の明白な方法は、8000バイトの長さのバッファを割り当ててから、SqlFetchO()が列の長さを返すと、返された正しいサイズを割り当て、コピー以上です。コピーは高価なので、私はこれを避けようとしています。
次の考えは、2つのSELECT文を発行することでした。最初は次のようになります。
SELECT DATALENGTH(Description) from SpecialOffer WHERE MinQty > 0
私はこれがどのように高価わからないけど、何のデータが実際にデータベースからコピーされていない、と2バイトの長さフィールドが読み込まれたばかりされ、これは速いかもしれないと仮定しますか? 2番目のクエリを実行する前に、各メンバーが正確な長さを持つ配列を割り当てることができます。
SQL Serverで行が取得される前に、正確なVARCHAR列の長さ情報を取得する方法はありますか?
また、バッファポインタへのポインタを指定する方法はありますか(つまり、ODBCドライバで必要なダブル参照解除)。これにより、Row-Wiseバインディングとバッファへのポインタ配列を使用することができます(2番目の手法を使用)。