Как получить редактируемый Recordset из UDF
|
|
Среда, 08 Августа 2018 г. 12:15
+ в цитатник
Есть MDB со связанными на SQL Server таблицами. На сервере UDF типа:
CREATE FUNCTION [dbo].[TestUDF]
(
@forCode int
)
RETURNS TABLE
AS
RETURN
(
SELECT top (100) PERCENT * FROM Box WHERE Box.Code=@forCode
)
Как из неё получить редактируемый Recordset ?
Я пытался, так же как открываю SP:
+ |
Public Function OpenSP(ByVal name As String, cmdType As ADODB.CommandTypeEnum, ParamArray ParamsAndValues()) As ADODB.Recordset
Dim e As Error
Dim cnn As ADODB.Connection
Dim cmd As ADODB.Command
Dim param As ADODB.Parameter
Dim rst As ADODB.Recordset
Dim expr As String
Dim I As Long
On Error GoTo err_me
Set cnn = New ADODB.Connection
cnn.Open ConnString
Set cmd = New ADODB.Command
Set cmd.ActiveConnection = cnn
Set rst = New ADODB.Recordset
Set rst.ActiveConnection = cnn
cmd.CommandText = name
cmd.CommandType = cmdType
cmd.NamedParameters = True
' evaluated params
On Error Resume Next
For Each param In cmd.Parameters
If param.Direction = adParamInput Or param.Direction = adParamInputOutput Then
expr = GetOriginalName(param.name)
param.Value = Eval(expr)
End If
Next param
On Error GoTo err_me
'passed params
For I = LBound(ParamsAndValues) To UBound(ParamsAndValues) Step 2
Set param = cmd.Parameters("@" & ParamsAndValues(I))
param.Value = ParamsAndValues(I + 1)
Next I
rst.CursorType = adOpenDynamic
rst.CursorLocation = adUseClient
rst.Open cmd
Set OpenSP = rst
exit_me:
Exit Function
err_me:
Debug.Print Now, Err.Number, Err.Description
For Each e In DBEngine.Errors
Debug.Print "", e.Number, e.source, e.Description
Next e
Debug.Print , , name
Debug.Assert False
Err.Clear
Resume exit_me
End Function
|
Вызов
?openSP("TestUDF",adCmdText ,"forCode",7777).RecordCount
Но ошибка уже на этапе работы с коллекцией параметров.
http://www.sql.ru/forum/1300647/kak-poluchit-redaktiruemyy-recordset-iz-udf
-
Запись понравилась
-
0
Процитировали
-
0
Сохранили
-