В настоящее время я работаю над классическим проектом ASP, разговаривая с базой данных Oracle. Я пытаюсь найти способ безопасного вызова сценария Oracle PL / SQL и передачи параметров с помощью ADO. В настоящее время решение создает сценарий SQL вручную со встроенными переменными, такими как:
strSQL = "SELECT field1, etc FROM my_table WHERE (field = '" & filter_value & "')"
Это, конечно, некрасиво и небезопасно, и оно открыто для злоупотреблений.
Код, который я до сих пор (украденный из различных не классических веб-сайтов на основе ASP) выглядит так:
dim strSQL, oConn, oCommand, oParam
set oConn = server.createobject("ADODB.Connection")
oConn.Open myConnString
strSQL = "SELECT field1, etc FROM my_table WHERE (field = :filter_field)"
dim oFilteredList
set oFilteredList = Server.CreateObject("ADODB.Command")
oFilteredList.ActiveConnection = oConn
oFilteredList.CommandText = strSQL
oFilteredList.CommandType = adCmdText
oFilteredList.NamedParameters = True
set oParam = oFilteredList.CreateParameter("filter_field", adVarChar, adParamInput, 10, filter_value)
oFilteredList.Parameters.Append oParam
set rsResults = oFilteredList.Execute
Это вызывает ошибку «Объект параметра неправильно определен. Непоследовательная или неполная информация была предоставлена »
Каков правильный метод вызова Oracle / PL / SQL с именованными параметрами из ADO? Мне нужно использовать именованные параметры, потому что реальный код SQL несколько сложнее, а различные параметры используются в команде SQL несколько раз.