У меня есть следующий код в приложении VB.NET, который заполняет данные:
sql = "SELECT *
FROM REQUESTS
WHERE VAL IN ( :pValList )
AND STATUS NOT IN (0, 2, 9, 10)"
da = New OracleDataAdapter(sql, conn)
da.SelectCommand.BindByName = True
da.SelectCommand.Parameters.Add(New OracleParameter("pValList", pValList))
da.Fill(dsData, "RequestHistory")
Однако я получаю сообщение об ошибке неверного номера, вызванное этой строкой:
WHERE VAL IN ( :pValList )
ValList
на самом деле является строкой, такой как 12566, 13234, 244555
, однако строка создается как допустимый SQL, и, если я возьму эту строку и запущу ее непосредственно в SQL Developer, возврат не вызывает проблем. Кроме того, если я удаляю параметр из своего кода VB.NET и использую те же значения, но жестко запрограммированные, он работает правильно.
У меня есть код в другом месте, который ссылается на ту же таблицу и столбец, что не вызывает проблем, например ::
SELECT *
FROM REQUESTS
WHERE VAL = :pVal
Что VB.NET (или ODP.NET) делает с параметром, который приводит к тому, что он вводится как «недопустимое число»?