Переменные связывания для операторов SQL ADODB Oracle

Я безуспешно пытался найти действительно простой пример. Я близко, но что-то все еще не так. Я хочу использовать переменные связывания в программе VB, которую я пишу. Я получаю пропущенное выражение оракула, если использую @ для своих переменных связывания. Если я использую & для них, я получаю не все переменные связаны

Dim cnt As New ADODB.Connection
Dim rst As New ADODB.Recordset
Dim cmd As ADODB.Command
Dim par As ADODB.Parameter

Dim test As String
Dim plcynbr As String


Dim sSQL As String
Dim lngLenName As String

lngsize = 50
lngLenName = "'bozo test'"

sSQL = "UPDATE MyTable SET ID_Name = @theName WHERE ID = @id"

        dbConnectStr = "Provider=msdaora;Data Source=P1ltcent;User ID=userid;Password=password"
        cnt.ConnectionString = dbConnectStr
        cnt.Open dbConnectStr



Set cmd = New ADODB.Command
With cmd
    .ActiveConnection = cnt
    .CommandType = adCmdText
    .CommandText = sSQL
    Set par = .CreateParameter("@theName", adVarChar, adParamInput, lngsize, lngLenName)
    .Parameters.Append par
    Set par = .CreateParameter("@id", adInteger, adParamInput, , 1)
    .Parameters.Append par


 For Each prm In .Parameters
    Debug.Print prm.Name & " : " & prm.Value
Next

Debug.Print cmd.CommandText


    .Execute , , adCmdText And adExecuteNoRecords
End With

Итак, я отобразил свои параметры, и они выглядят хорошо для меня &theName: 'bozo test' &id: 1

Я показал свой SQL, и он выглядит хорошо для меня

ОБНОВЛЕНИЕ MyTable SET ID_Name = &theName WHERE ID = &id

но я все еще получаю не все переменные привязаны

2 ответа

 Dim cnt As New ADODB.Connection
 Dim rst As New ADODB.Recordset
 Dim cmd As ADODB.Command
 Dim par As ADODB.Parameter

Dim test As String
 Dim plcynbr As String


 Dim sSQL As String
 Dim lngLenName As String

 lngsize = 50
 lngLenName = "bozo test"

sSQL = "UPDATE MyTable SET ID_Name = ? WHERE ID = ?"

    dbConnectStr = "Provider=msdaora;Data Source=P1ltcent;User ID=userid;Password=password"
    cnt.ConnectionString = dbConnectStr
    cnt.Open dbConnectStr



Set cmd = New ADODB.Command
With cmd
  .ActiveConnection = cnt
  .CommandType = adCmdText
  .CommandText = sSQL

   Set par = .CreateParameter("param1", adChar, adParamInput, lngsize, lngLenName)
  .Parameters.Append par


Set par = .CreateParameter("param2", adInteger, adParamInput, , 1)
.Parameters.Append par



For Each prm In .Parameters
    Debug.Print prm.Name & " : " & prm.Value
Next

Debug.Print cmd.CommandText


.Execute , , adCmdText And adExecuteNoRecords
End With

Переменные связывания в oracle обычно начинаются с:

:my-bind-var

Посмотрите здесь для аналогичного обсуждения: http://www.vbforums.com/showthread.php?681536-RESOLVED-bind-variables-against-Oracle-%28ADODB-ORACLE-BIND-PARAMETER-QUERY%29

По сути, вам нужно что-то подобное в вашем коде

sSQL = "UPDATE MyTable SET ID_Name = :theName WHERE ID = :id"

... затем связать их (без двоеточия) ...

Set par = .CreateParameter("theName", adVarChar, adParamInput, lngsize, lngLenName)
Другие вопросы по тегам