Я пытаюсь вставить некоторые данные в SQL из Excel VBA. Команды SQL создаются в ходе сценария VBA и включают использование некоторых переменных SQL.
Я пытаюсь понять, как транзакции работают в VBA, и будут ли они работать с тем, что мне нужно, у меня есть код ниже, который проверит это, но он не работает. Это всегда дает мне сообщение об ошибке «Необходимо определить скалярную переменную @name», поэтому я предполагаю, что здесь есть проблема с областью действия данных / транзакции. Как мне заставить этот простой код работать?
Const stADO As String = "Provider=SQLOLEDB.1;Integrated Security=SSPI;" & _
"Persist Security Info=False;" & _
"Initial Catalog=ImportTest;" & _
"Data Source=localhost\sqlexpress"
Set cn = New ADODB.Connection
With cn
.CursorLocation = adUseClient
.Open stADO
.CommandTimeout = 0
End With
cn.BeginTrans
cn.Execute "set implicit_transactions off"
cn.Execute ("declare @name varchar(100)")
cn.Execute ("set @name='name'")
cn.Execute ("Insert into test (id,name) values (55,@name)")
cn.CommitTrans
cn.Close
Set cn = Nothing