VBA 执行非标量函数

示例

ADO连接几乎可以用来执行提供程序通过SQL支持的任何数据库功能。在这种情况下,虽然使用@@ Identity或类似的SQL命令在INSERT语句之后获取键分配很有用,但不一定总是使用该函数Recordset返回的Execute值。请注意,OpenDatabaseConnection为简洁起见,下面的示例使用从建立连接到数据源示例的功能。

Public Sub UpdateTheFoos()
    On Error GoTo Handler
    Dim database As ADODB.Connection
    Set database = OpenDatabaseConnection(SomeDSN)
    
    If Not database Is Nothing Then
        Dim update As ADODB.Command
        Set update = New ADODB.Command
        'Build the command to pass to the data source.
        With update
            .ActiveConnection = database
            .CommandText = "UPDATE Table SET Foo = 42 WHERE Bar IS NULL"
            .CommandType = adCmdText
            .Execute        'We don't need the return from the DB, so ignore it.
        End With
    End If
CleanExit:
    If Not database Is Nothing Anddatabase.State= adStateOpen Then
        database.Close
    End If
    Exit Sub
Handler:
   Debug.Print"Error " &Err.Number& ": " & Err.Description
    Resume CleanExit
End Sub

请注意,发送到数据源的命令容易受到SQL注入的影响,无论是有意还是无意的。通常,不应通过串联任何类型的用户输入来创建SQL语句。而是应对其进行参数化(请参阅创建参数化命令)。