Array o recordset como parámetro a Store Procedure
Publicado por Pelida (7 intervenciones) el 24/06/2020 23:25:42
Hola,
estoy tratando de pasar a un procedimiento almacenado en SQL Server un arreglo o un ADO recordset pero en ambos casos me da el mismo error
"Se ha producido un error 3001 en tiempo de ejecución: Argumentos incorrectos, fuera del intervalo o en conflicto con otros"
en el recordset solo hay un registro con dos columnas
Nombre FechaAlta
CLIENTE 1 2018-10-25
¿ tenéis alguna idea o solución ?. Adjunto el código, muchas gracias de antemano
estoy tratando de pasar a un procedimiento almacenado en SQL Server un arreglo o un ADO recordset pero en ambos casos me da el mismo error
"Se ha producido un error 3001 en tiempo de ejecución: Argumentos incorrectos, fuera del intervalo o en conflicto con otros"
en el recordset solo hay un registro con dos columnas
Nombre FechaAlta
CLIENTE 1 2018-10-25
¿ tenéis alguna idea o solución ?. Adjunto el código, muchas gracias de antemano
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
CREATE TYPE [dbo].[Cliente] AS TABLE(
[NOMBRE] varchar(100) NULL,
[FECHAALTA] [date] NULL
)
GO
CREATE PROCEDURE [dbo].[SP_PruebaConClientes]
@para1 int,@para2 Cliente READONLY
AS
BEGIN
SET NOCOUNT ON;
SELECT Nombre,FechaAlta FROM CLIENTE WHERE Cliente = 1
END
Sub Prueba1()
Dim con As ADODB.Connection
Dim com As ADODB.Command
Dim rs As ADODB.Recordset
Dim rst As ADODB.Recordset
Dim array1, array2
Set con = New ADODB.Connection
Set com = New ADODB.Command
Set rs = New ADODB.Recordset
Set rst = New ADODB.Recordset
con.ConnectionString = ConexionDSN
con.Open
rs.Open "SELECT Nombre,FechaAlta FROM CLIENTE WHERE Cliente = 1", con, adOpenKeyset, adLockReadOnly
array1 = rs.GetRows
array2 = TransposeArray(array1)
Debug.Print array2(0, 0) & array2(0, 1)
Set com = Nothing
Set com = New ADODB.Command
With com
.ActiveConnection = con
.CommandText = "SP_PruebaConClientes"
.CommandType = adCmdStoredProc
.Parameters.Append .CreateParameter("@para1", adBigInt, adParamInput, 1, 1)
.Parameters.Append .CreateParameter("@para2", adArray, adParamInput, , array1)
Set rst = .Execute
End With
con.Close
Set con = Nothing
Set com = Nothing
Set rs = Nothing
End Sub
Valora esta pregunta


0