2017-09-26 6 views
0

Ich habe eine parametrisierte Abfrage, dieparametrisierte Abfrage in VBScript Bezug OracleDB

schenkt "ORA-01008: nicht alle Variablen gebunden" Fehler.

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() 

Ich versuche, in der Syntax auf verschiedene Weise zu ändern, dann wird es

geben

ORA-00936: fehlende Ausdruck

Bitte helfen Sie mir zu bekommen, Dies. Zu Ihrer Information gibt es kein Problem mit der Verbindung, da ich mich mit der normalen Abfrage verbinden kann.

+0

Zugegeben, ich verwende Oracle nicht, sondern ist der Anbieter Syntax alle anders als andere Anbieter ADODB wenn 'adCmdText' mit? Hast du '?' Anstelle von ': id' in deiner SQL-Zeichenkette versucht? – Lankymart

+0

Danke für Ihre Antwort, ich bin mir nicht sicher über die Syntax. Ich habe '' 'wie vorgeschlagen versucht, aber immer noch vor" ORA-01008: nicht alle Variablen gebunden "Fehler –

+0

Nur um zu bestätigen, Sie versucht' Cmd.CommandText = "SELECT column_name FROM Tabelle WHERE (id =?)" 'Ohne Erfolg? – Lankymart

Antwort

0

ein paar Dinge zu überprüfen:

1) sich bemühen, einen Wert für strID Codierung, so statt:

strID = Request.QueryString("id") 

versuchen
strID = 100 

2) Ihre Spaltendefinitionen überprüfe und stellen Sie sicher, dass Sie aus einem varchar (50) -Feld auswählen

3) stellen Sie sicher, dass Sie haben adovbs.inc referenziert auf Ihrer Seite für die ADO-Konstanten Definitionen

0

Dank @Lankymart, zum Glück habe ich die Lösung dafür wie folgt. Es funktioniert gut für mich und Entschuldigung für die Verzögerung bei der Veröffentlichung der Antwort, mein Problem vor 2 Stunden gelöst.

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() 
+0

Wie Josh [erwähnt in Punkt 3.] (https://Stackoverflow.com/a/46428521/692942), wird es das Fehlen der benannten Konstanten wie 'adCmdText',' adVarChar' etc. sein. Ich habe es jedoch nicht erwähnt, weil es vor dem Erreichen von Oracle einen Fehler verursacht haben sollte, weil 'Cmd.CommandType = adCmdText' Ich hätte auch erwartet, dass es fehlschlägt. Sehen Sie sich [diese Antwort] (https://stackoverflow.com/a/35530750/692942) an, um zu erfahren, wie Sie es mit METADATA lösen können, ohne die genannten Konstanten zu entfernen. – Lankymart

Verwandte Themen