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.

Preguntas similare

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.
Respuesta Responder a este mensaje
#2 Rubén Vigón
27/03/2007 - 13:43 | Informe spam
Hola Juan,

Yo uso XML: genero la cadena XML en la aplicación cliente, se la envío al servidor en un parámetro varchar(4000) y obtengo sus registros y los inserto en mi tabla mediante «OpenXML»

Un saludo!

Rubén Vigón
Microsoft MVP Visual Basic
http://vigon.mvps.org
Respuesta Responder a este mensaje
#3 Maxi
27/03/2007 - 14:32 | Informe spam
Ruben yo tambien :) pero en lugar de usar varchar(4000) uso text y en 2005
directamente xml


Salu2

Microsoft MVP SQL Server
Culminis Speaker

"Rubén Vigón" escribió en el mensaje
news:
Hola Juan,

Yo uso XML: genero la cadena XML en la aplicación cliente, se la envío al
servidor en un parámetro varchar(4000) y obtengo sus registros y los inserto
en mi tabla mediante «OpenXML»

Un saludo!

Rubén Vigón
Microsoft MVP Visual Basic
http://vigon.mvps.org
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida