Я искал лучший способ переписать эту текущую VBA / MS Access Sub для работы в хранимой процедуре в SQL Server 2005. Мы не должны использовать CURSORS
для элементов, если мы не сможем полностью объяснить причиныпочему мы не можем сделать это по-другому.
Текущий код:
Public Sub updcsh()
Dim tranamt
Dim Acct
Dim acct2
Dim Csh
Dim recSet As Recordset
DAO.DBEngine.SetOption dbMaxLocksPerFile, 100000
Set recSet = CurrentDb.OpenRecordset("FndVios")
recSet.MoveFirst
Do Until recSet.EOF
Acct = recSet![ID]
tranamt = recSet![TAM]
If Acct <> acct2 Then
Csh = recSet![Due]
End If
Csh = Csh+ tranamt
acct2 = Acct
recSet.Edit
recSet![Due] = Csh
recSet.Update
recSet.MoveNext
Loop
End Sub
Ниже открывается набор записей:
SELECT ID, EXEC_TM, Due, TAM
FROM FRT
ORDER BY ID, EXEC_DT, EXEC_TM, D_C_CD, SEQ_NBR, TAM DESC
Я искал в SO и нашел this ,Я посмотрел на курсоры и другие методы, как написать это для хранимого процесса, и я не могу найти правильный способ переписать это.
Может кто-нибудь предложить какие-либо предложения?Должен ли я использовать временную таблицу?Я не делал этого раньше, и я озадачен тем, как действовать.
РЕДАКТИРОВАТЬ:
Sample Data
Original:
ID EXEC_TM Due TAM
12345678 12343811 $9250.81 $-6561.91
12345678 12343822 $9250.81 $-4374.63
12345678 15581917 $9250.81 $-4762.76
Final Result:
ID EXEC_TM Due TAM
12345678 12343811 $2688.87 $-6561.91
12345678 12343822 $-1685.76 $-4374.63
12345678 15581917 $-6448.52 $-4762.76