小编Buz*_*ick的帖子

在Classic ASP中从ADODB调用参数化Oracle查询

我目前正在开发一个与Oracle数据库交谈的经典ASP项目.我正试图找到一种方法来安全地调用Oracle PL/SQL脚本并使用ADO传递参数.当前的解决方案使用嵌入式变量手动构建SQL脚本,如下所示:

strSQL = "SELECT field1, etc FROM my_table WHERE (field = '" & filter_value & "')"
Run Code Online (Sandbox Code Playgroud)

当然,这是丑陋和不安全的,并且容易被滥用.

到目前为止我所拥有的代码(来自各种非经典的基于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
Run Code Online (Sandbox Code Playgroud)

这会导致错误"参数对象未正确定义.提供的信息不一致或不完整"

使用ADO中的命名参数调用Oracle/PL/SQL的正确方法是什么?我需要使用命名参数,因为实际的SQL代码有点复杂,并且在整个SQL命令中多次使用不同的参数.

oracle named-parameters asp-classic

5
推荐指数
1
解决办法
6632
查看次数

标签 统计

asp-classic ×1

named-parameters ×1

oracle ×1