参考OracleDB的VBScript中的参数化查询

时间:2017-09-26 06:23:12

标签: oracle vbscript asp-classic

我有一个参数化查询,它给出了

  

“ORA-01008:并非所有变量都绑定”错误。

Dim Conn
Dim Cmd
Dim RS

Dim strID
Dim param

strID = Request.QueryString("id") 
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open strConnect    


Set Cmd = Server.CreateObject("ADODB.Command")


Cmd.CommandText = "SELECT column_name FROM table WHERE (id = :id)"
Set param = Cmd.CreateParameter("id", adVarChar , adParamInput ,50 , strID)
Cmd.Parameters.Append param
Cmd.CommandType = adCmdText

Set Cmd.ActiveConnection = Conn


Set RS = Cmd.Execute()

我正在尝试以多种方式修改语法,然后是

  

ORA-00936:缺少表达

请帮我摆脱这个。为了您的信息,连接没有问题,因为我能够连接普通查询。

2 个答案:

答案 0 :(得分:0)

要检查的一些事项:

1)尝试对strID的值进行硬编码,而不是:

strID = Request.QueryString("id")

strID = 100

2)仔细检查您的列定义并确保从varchar(50)字段中选择

3)确保您的页面上引用了adovbs.inc以获取ADO常量定义

答案 1 :(得分:0)

谢谢@Lankymart,幸运的是我得到了解决方案,如下所示。这对我来说很好,对于延迟发布答案感到抱歉,我的问题在2小时前解决了。

Dim Conn
Dim Cmd
Dim RS

Dim strID
Dim param

strID = Request.QueryString("id") 
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open strConnect    
Set Cmd = Server.CreateObject("ADODB.Command")

With Cmd
.CommandText = "SELECT column_name FROM table WHERE id = ?"
.Parameters.Append  .CreateParameter(,200, 1 ,50 ,strID)
 Set .ActiveConnection = Conn
End With

Set RS = Cmd.Execute()