Recibir vector de datos en Procedimiento almacenado

24/02/2010 - 18:50 por Alberto | Informe spam
En una aplicación tengo una clase artículo que quiero grabar utilizando
un procedimiento almacenado.

Con los campos propios de la tabla de artículos no hay problema pero
como el artículo puede ser proporcionado por varios proveedores, me
gustaría que el procedimiento pudiese recibir una cantidad no prefijada
de códigos de proveedor para insertarlos en la tabla que relaciona los
artículos con los proveedores.

¿Se puede hacer? Gracias

Preguntas similare

Leer las respuestas

#1 Alejandro Mesa
24/02/2010 - 21:43 | Informe spam
Alberto,

Si, si se puede hacer esto.

Si estas usando SQL Server 2008, entonces puedes usar un parametro tipo
tabla TVP, donde pondras los codigos de los proveedores.

Si estas usando una version previa (2000 / 2005), entonces puedes pasar toda
la data usando un documento XML. Pudieras tambien pasar la lista de
proveedores como una cadena delimitada y luego partir la cadena mediante una
funcion.

Aca te paso un articulo donde se explican los distintos metodos que se
pueden usar para pasar la lista.

Arrays and Lists in SQL Server
http://www.sommarskog.se/arrays-in-sql.html

AMB


"Alberto" wrote:

En una aplicación tengo una clase artículo que quiero grabar utilizando
un procedimiento almacenado.

Con los campos propios de la tabla de artículos no hay problema pero
como el artículo puede ser proporcionado por varios proveedores, me
gustaría que el procedimiento pudiese recibir una cantidad no prefijada
de códigos de proveedor para insertarlos en la tabla que relaciona los
artículos con los proveedores.

¿Se puede hacer? Gracias
.

Respuesta Responder a este mensaje
#2 Alberto
24/02/2010 - 22:27 | Informe spam
Gracias por el enlace. Muy completo e interesante.

En cualquier caso me estoy planteando qué será más eficiente: pasar un
parámetro tabla TVP y procesarlo para ir haciendo las inserciones
(código artículo, código proveedor) o bien, llamar desde la aplicación
dentro de un bucle a un procedimiento almacenado que simplemente inserte
una fila en la tabla.


El 24/02/2010 21:43, Alejandro Mesa escribió:
Alberto,

Si, si se puede hacer esto.

Si estas usando SQL Server 2008, entonces puedes usar un parametro tipo
tabla TVP, donde pondras los codigos de los proveedores.

Si estas usando una version previa (2000 / 2005), entonces puedes pasar toda
la data usando un documento XML. Pudieras tambien pasar la lista de
proveedores como una cadena delimitada y luego partir la cadena mediante una
funcion.

Aca te paso un articulo donde se explican los distintos metodos que se
pueden usar para pasar la lista.

Arrays and Lists in SQL Server
http://www.sommarskog.se/arrays-in-sql.html

AMB


"Alberto" wrote:

En una aplicación tengo una clase artículo que quiero grabar utilizando
un procedimiento almacenado.

Con los campos propios de la tabla de artículos no hay problema pero
como el artículo puede ser proporcionado por varios proveedores, me
gustaría que el procedimiento pudiese recibir una cantidad no prefijada
de códigos de proveedor para insertarlos en la tabla que relaciona los
artículos con los proveedores.

¿Se puede hacer? Gracias
.

Respuesta Responder a este mensaje
#3 Alejandro Mesa
25/02/2010 - 02:49 | Informe spam
Alberto,

Sin duda que la opcion de pasar un TVP. Puedes completar la transaccion en
una sola llamada al servidor.


AMB


"Alberto" wrote:

Gracias por el enlace. Muy completo e interesante.

En cualquier caso me estoy planteando qué será más eficiente: pasar un
parámetro tabla TVP y procesarlo para ir haciendo las inserciones
(código artículo, código proveedor) o bien, llamar desde la aplicación
dentro de un bucle a un procedimiento almacenado que simplemente inserte
una fila en la tabla.


El 24/02/2010 21:43, Alejandro Mesa escribió:
> Alberto,
>
> Si, si se puede hacer esto.
>
> Si estas usando SQL Server 2008, entonces puedes usar un parametro tipo
> tabla TVP, donde pondras los codigos de los proveedores.
>
> Si estas usando una version previa (2000 / 2005), entonces puedes pasar toda
> la data usando un documento XML. Pudieras tambien pasar la lista de
> proveedores como una cadena delimitada y luego partir la cadena mediante una
> funcion.
>
> Aca te paso un articulo donde se explican los distintos metodos que se
> pueden usar para pasar la lista.
>
> Arrays and Lists in SQL Server
> http://www.sommarskog.se/arrays-in-sql.html
>
> AMB
>
>
> "Alberto" wrote:
>
>> En una aplicación tengo una clase artículo que quiero grabar utilizando
>> un procedimiento almacenado.
>>
>> Con los campos propios de la tabla de artículos no hay problema pero
>> como el artículo puede ser proporcionado por varios proveedores, me
>> gustaría que el procedimiento pudiese recibir una cantidad no prefijada
>> de códigos de proveedor para insertarlos en la tabla que relaciona los
>> artículos con los proveedores.
>>
>> ¿Se puede hacer? Gracias
>> .
>>

.

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida