VBA ADO pasar parámetro de matriz a procedimiento almacenado
Tengo un array con 3 columnas y 100K de filas en un archivo VBA MS Excel.
Quiero pasar este array a un Stored Procedure de SQL Server y en el Stored Procedure convertirlo a una tabla temporal para hacer mis “cosas..”
¿Cómo paso un array a un Stored Procedure?
Este es un ejemplo de mi array en VBA:
Col1 | Col2 | Col3
1 AAA XXX
2 BBB YYY
3 CCC ZZZ
El código VBA:
……
Set Cmd = CreateObject(“ADODB.Command”)
Cmd.CommandType = 4
Cmd.NamedParameters = True
Cmd.ActiveConnection = DbConn
Cmd.CommandText = “My_SP_WithArrayParam”
”No sé qué parámetros usar aquí:
Cmd.Parameters.Append Cmd.CreateParameter(“@Arr”, ??? , ?? , ??? , My_100K_Arr)
Cmd.Execute
Y en el lado SQL:
Create or alter proc My_SP_WithArrayParam(
@Arr ???
)
as
begin
create table #Tbl_From_Excel (
ID int
,COL1 nvarchar(60)
,COL2 nvarchar(60)
)
---Necesito ingresar el array en la tabla temporal, y no conozco la sintaxis
end
davy.ai
Se puede pasar una matriz a un procedimiento almacenado utilizando un parámetro de tipo “table-valued”. En el código VBA se puede crear un parámetro de tipo “adVariant” y establecer la propiedad “Value” en la matriz. En el lado SQL, se puede declarar el parámetro como un parámetro de tipo “table-valued” y utilizar la instrucción “INSERT INTO” para insertar la matriz en la tabla temporal.
El código VBA se vería así:
Y en el lado SQL: