2012-02-16 64 views
1

私はどのようにこの場所で使用するかの例を見つけることができませんでした。私は、パラメータ化されたクエリで簡単なSELECT文を実行しようとしています。私は、adArrayデータ型を使用します。ここに例がありますVBScriptでadArrayデータ型のADODBパラメータ付きクエリを使用する方法?

sql = "SELECT * FROM table WHERE id IN ?" 
set objCmd = Server.CreateObject("ADODB.Command") 
set objParam = objCmd.Createparameter("@id", 0x2000, 1, length, arrMyArray) 

objCmd.Parameters.Append objParam 

これは誤ったタイプのエラーをスローします。誰かがこれまでにこれを働かせたり、事例を持っていれば、私は不思議でした。それは素晴らしいだろう。

事前にお世話になりました!

+0

私はすべての接続とレコードセットを取り除き、実際にコマンドを実行しました。 – robbie

答えて

1

どのデータベースプロバイダが配列をサポートしているかわかりません。

私がやりたいことは、配列を単一の長い文字列として渡し、Split()というUDFを使用することです。結果はこのようなものです:

sql = "SELECT * FROM table WHERE id IN (Split(?))" 
set objCmd = Server.CreateObject("ADODB.Command") 
myBigString = ConvertArrayToCSV(arrMyArray) ' you have to write this, of course 
set objParam = objCmd.Createparameter("@id", 200, 1, length, myBigString) 

objCmd.Parameters.Append objParam 

Here's a discussion of the Split() concept.

編集

私は(パラメータの型が200、ではない0x2000である)上記を修正し、私も今、ADOがに表示されていることを見ますこの構文をサポートしています:

0x2000 OR 129 ' array of strings 
0x2000 OR 200 ' array of varchar 

しかし、私はこれをテストしていません。

+0

迅速な対応に感謝します。これは愚かな疑問かもしれませんが、objParamに文字列型の配列であることをどのくらい正確に伝えたいと思いますか?他のデータ型と組み合わせて他のデータ型が配列であることを示す別のデータ型と組み合わせる 0x2000でこれを行うには – robbie

+1

ドキュメントには含まれていますがサポートされていませんADOによって作成され、将来の互換性のために追加されました。 – Lankymart

+0

Lankymartのより詳細な情報は、実装されていないadArrayの型:http://stackoverflow.com/a/35453499/1026 – Nickolay

関連する問題