Preguntado hace 1 año
munchking
Editada hace 1 año
Javier Suero
Buenas, en una aplicación de gestión de facturas queremos hacer un procedimiento almacenado (en sqlserver 2008) al que le pasemos la cabecera de la factura y los detalles de esta, los detalles pueden ser uno o más de uno, más que nada para que sea todo en la misma transacción, sé que la transacción la podríamos manejar desde fuera pero nos parece peor solución y preferimos que esté todo centralizado, el problema es que no sabemos cómo podemos enviar una lista como parámetro de un procedmiento almacenado.
Saludos.
Hace 1 año
Fernando Calle
Hola, munchking, si fuera sql server 2005 la solución pasaría por crear un parámetro de tipo xml y parsearlo en el procedimiento almacenado, algo como esto:
create procedure spFactura @idCliente nvarchar(200), @valorTotal int, @detalles xml as begin -- Supongo que primero insertarás la cabecera -- Orientación de cómo insertar los detalles insert into detallesTabla (idFactura, valor) select cast(colx.query('data(idFactura)') as int) as idFactura, cast(colx.query('data(valor)') as int) as valor from @detalles.nodes('DocumentElement/Detalles') as TABX(COLX); end
Puedes leer más de esto en http://www.codeproject.com/KB/database/DataTableAsXMLToDataBase.aspx
Siendo 2008, aún no lo he probado :S leo que puedes definirun tipo "tabla" con los campos que tú quieras y llenarlo desde .net 3.5, más información en http://sqldata.blogspot.com/2009/08/mejoras-en-t-sql-de-sql-server-2008-el.html
Saludos, Fernando.
Si sales ahora, perderás los cambios. ¿Estás seguro de querer salir?
Para participar en Babelias, debes estar convenientemente validado. Si ya eres usuario inicia sesión, si no lo eres, te puedes registrar.
Trata de ser descriptivo, usa al menos 25 caracteres
LLeva tu prestigio a tu página o blog, con el widget de Babelias
Usuario de ejemplo