At times you may need to swap the values of two columns of the same SQL Server table. For example, suppose that you realized that the fname column of the Employee table contains the last name of each employee, and vice versa. Typically you do this from VB using a writeable cursor-based Recordset, as in:
Dim cn As New ADODB.ConnectionDim rs As New ADODB.RecordsetDim tmp As Stringcn.Open "...your connect string..."rs.Open "Employee", cn, adOpenDynamic, adLockOptimistic, adCmdTableDo Until rs.EOF tmp = rs("fname") rs("fname") = rs("lname") rs("lname") = tmpLooprs.Closecn.Close
However, you can take advantage of T-SQL and perform the same operation much faster, by executing it on the server (instead of the client) and without any explicit loop. This is possible thanks to T-SQL temporary variables and the capability to assign and use them inside an UPDATE statement. This is the T-SQL statement that performs the swap:
DECLARE @tmp VARCHAR(50)UPDATE employee SET @tmp=fname, fname=lname, [email protected]and this is the VB code that executes it:
cn.Open "Provider=SQLOLEDB.1;Integrated Security=SSPI;Initial Catalog=pubs;Data " _ & "Source=(local)"cn.Execute "DECLARE @tmp VARCHAR(50)" & vbCrLf & _ "UPDATE employee SET @tmp=fname, fname=lname, [email protected]"