Как использовать параметризованный запрос ADODB с типом данных adArray в VBScript? - PullRequest
2 голосов
/ 16 февраля 2012

Мне не удалось найти пример того, как это использовать где-либо.Я пытаюсь сделать простой оператор SELECT с параметризованным запросом.Я хочу использовать тип данных adArray.Вот пример

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

Это выдает ошибку неправильного типа.Мне было любопытно, если кто-нибудь когда-либо заставил это работать или есть примеры.Это было бы здорово.

Спасибо за помощь заранее!

1 Ответ

2 голосов
/ 16 февраля 2012

Я не знаю, какие поставщики баз данных будут поддерживать массивы.

Что я предпочитаю делать, так это передавать массив как одну длинную строку, а затем использовать пользовательскую функцию Split (). Результат примерно такой:

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

Вот обсуждение концепции Split ().

Редактировать

Я исправил вышеприведенное (тип параметра 200, а не 0x2000), и теперь я также вижу, что ADO поддерживает этот синтаксис:

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

Но я не проверял это.

...