Parámetros para procedimientos almacenados

26/03/2007 - 20:59 por juanntorres | Informe spam
Hola, tengo un pequeño desconocimiento en lo que respecta a cierto
tipo de parámetros.

Tengo un software que en sus componentes hace todas las llamadas a las
bases de datos de sql server 2000, como es normal claro, resulta que
cierto proceso donde puedo en mi aplicación hacer todo un conjunto de
registros y luego enviarlos a un procedimiento almacenado. Mi pregunta
es ¿como puedo enviarle todo el conjunto de registros sin tener que
enviarle registro por registro al procedimiento almacenado?

Me explico con un ejemplo bien sencillo: Si acabo de crear 7 clientes
en un cursor o archivo en memoria, entonces a la hora de guardarlos en
la base de datos, debo enviarlos uno por uno, para un total de 7
llamados del procedimiento almacenado que se encarga de guardar a los
clientes. Lo que quisiera es poder enviar ese conjunto de registros
para que en procedimiento almacenado se ejecute este proceso sin tener
que usar este ciclo en la programación de mi aplicación.

Gracias por todo, espero una buena respuesta que me saque de este lío
en cuanto a velocidad.
 

Leer las respuestas

#1 Jesús López
27/03/2007 - 13:26 | Informe spam
El procedimiento almacenado podría recibir todos los registros en un
parámetro de tipo text que contuviera los registros en formato XML. Luego
usando OPENXML puedes insertar todos los registros.

Sería algo así como:

CREATE PROCEDURE proc_insertar_clientes
@clientes_xml text
AS
DECLARE @handle INT
EXEC sp_xml_prepare_document @handle OUT, @clientes

INSERT INTO Clientes( <lista de campos> )
SELECT <lista de campos>
FROM OPENXML(@handle, <row patern>)

EXEC sp_xml_remove_document @handle






"juanntorres" escribió en el mensaje
news:
Hola, tengo un pequeño desconocimiento en lo que respecta a cierto
tipo de parámetros.

Tengo un software que en sus componentes hace todas las llamadas a las
bases de datos de sql server 2000, como es normal claro, resulta que
cierto proceso donde puedo en mi aplicación hacer todo un conjunto de
registros y luego enviarlos a un procedimiento almacenado. Mi pregunta
es ¿como puedo enviarle todo el conjunto de registros sin tener que
enviarle registro por registro al procedimiento almacenado?

Me explico con un ejemplo bien sencillo: Si acabo de crear 7 clientes
en un cursor o archivo en memoria, entonces a la hora de guardarlos en
la base de datos, debo enviarlos uno por uno, para un total de 7
llamados del procedimiento almacenado que se encarga de guardar a los
clientes. Lo que quisiera es poder enviar ese conjunto de registros
para que en procedimiento almacenado se ejecute este proceso sin tener
que usar este ciclo en la programación de mi aplicación.

Gracias por todo, espero una buena respuesta que me saque de este lío
en cuanto a velocidad.

Preguntas similares