Agregar varios Registros (Encabezado y detalle) en un Store Procedure

30/09/2008 - 03:37 por Edgar Ortiz | Informe spam
Necesito agregar el encabezado de una Factura y su detalle en una sola
transaccion utilizando un store procedure.

Me surgen dos dudas:
1- Cual es el LARGO maximo de una variable tipo caracter?
2- COmo hago para hacer un ciclo y obtener los datos que vienen como
parametros?

Ejemplo:

SP_Agrega_Factura (Fac_Numero, Detalle)

Fac_Numero = 123
Detalle = '111,1,50.25,222,1,100.00,333,1.5,25'
Donde esto significarian TRES (3) registros a agregar:
Registro: 1
Articulo = 111
Cantidad = 1
Precio = 50.25

Registro: 2
Articulo = 222
Cantidad = 1
Precio = 100.00

Registro: 3
Articulo = 333
Cantidad = 1.5
Precio = 25

Gracias de antemano por su tiempo

Saludos,

Edgar Ortiz
 

Leer las respuestas

#1 Jesús López
30/09/2008 - 14:20 | Informe spam
SQL Server 2000, 2005 o 2008?

Yo creo que lo más adecuado para hacer eso es pasarle al procedimiento
almacenado un documento XML con todos los datos, luego dependiendo de la
versión de SQL trataría el XML de una forma u otra.

CREATE PROCEDURE AgregarFactura
@factura <xml, text, ntext, varchar(8000) ... depende de la version>
AS

BEGIN TRAN
.

INSERT INTO CabeceraFactura
SELECT
FROM <aquí es distinto por cada version>

INSERT INTO DetallesFactura
SELECT
FROM <aqui es disitinto por cada version>


Además, para dar una solución completa sería necesario tener los scripts de
creación de las tablas.



"Edgar Ortiz" escribió en el mensaje
news:
Necesito agregar el encabezado de una Factura y su detalle en una sola
transaccion utilizando un store procedure.

Me surgen dos dudas:
1- Cual es el LARGO maximo de una variable tipo caracter?
2- COmo hago para hacer un ciclo y obtener los datos que vienen como
parametros?

Ejemplo:

SP_Agrega_Factura (Fac_Numero, Detalle)

Fac_Numero = 123
Detalle = '111,1,50.25,222,1,100.00,333,1.5,25'
Donde esto significarian TRES (3) registros a agregar:
Registro: 1
Articulo = 111
Cantidad = 1
Precio = 50.25

Registro: 2
Articulo = 222
Cantidad = 1
Precio = 100.00

Registro: 3
Articulo = 333
Cantidad = 1.5
Precio = 25

Gracias de antemano por su tiempo

Saludos,

Edgar Ortiz



Preguntas similares