none
CRUD en SQL Server RRS feed

  • Pregunta

  • Buenas tardes,

    Como puedo agregarle un CRUD( CRUD= Crear, Leer, Actualizar, Eliminar) a una base de datos almacenada, asea todo los procedimiento del CRUD en un solo Store Procedure.

    Agradecería los paso detallados.

    Saludos.

    miércoles, 3 de octubre de 2018 17:13

Respuestas

  • Hola!

    Manda todos los campos de la tabla y  un parámetro que defina la acción que deseas ejecutar

    CREATE PROCEDURE SP_CRUD_MiClase @accion as int, @llave as int, @campo1 as varchar(50), @campo2 as varchar(50), AS BEGIN IF @accion = 1 BEGIN

    'Acá si tu llave es autonumérica podrías hacer:

    'DECLARE @llavegenerada = SELECT ISNULL(MAX(llave),0)+1 FROM mitabla y usar @llavegenerada en vez de @llave

    INSERT INTO mitabla (llave,canmpo1,campo2) VALUES (@llave,@campo1,@campo2) END IF @accion = 2 BEGIN UPDATE mitabla SET campo1=@campo1,campo2=@campo2 WHERE llave = @llave END IF @accion = 3 BEGIN DELETE mitabla WHERE llave=@llave END '..... mas opciones END


    Pero te recomiendo que mejor hagas el listar o leer en otro sp, para mas orden, porque las accciones insert, update, delete se ejecutan contra la base de datos, modifican la tabla y leer te regresa los datos, es decir son comportamientos diferentes que no sería bueno mezclar, por  ejemplo si usas ADO.Net cuando necesites, insertar, actualizar o eliminar entonces ejecutarás el procedimiento almacenado con ExecuteNonQuery mientras que para leer los datos (listar) usarás un DataAdpater y tu código no se vería limpio mas bién podría resultar confuso.

    Asi que en vez de SP_CRUD_MiClase haz un SP_Grabar_MiClase y un SP_Leer_MiClase

    ¡Saludos!


    miércoles, 3 de octubre de 2018 17:37
  • Chequea tambien la sentencia MERGE pero ten en cuenta que muchas veces una transaccion puede involucrar mas de una tabla.

    AMB

    Some guidelines for posting questions...

    AYÚDANOS A AYUDARTE, guía básica de consejos para formular preguntas

    miércoles, 3 de octubre de 2018 18:19

Todas las respuestas

  • Hola!

    Manda todos los campos de la tabla y  un parámetro que defina la acción que deseas ejecutar

    CREATE PROCEDURE SP_CRUD_MiClase @accion as int, @llave as int, @campo1 as varchar(50), @campo2 as varchar(50), AS BEGIN IF @accion = 1 BEGIN

    'Acá si tu llave es autonumérica podrías hacer:

    'DECLARE @llavegenerada = SELECT ISNULL(MAX(llave),0)+1 FROM mitabla y usar @llavegenerada en vez de @llave

    INSERT INTO mitabla (llave,canmpo1,campo2) VALUES (@llave,@campo1,@campo2) END IF @accion = 2 BEGIN UPDATE mitabla SET campo1=@campo1,campo2=@campo2 WHERE llave = @llave END IF @accion = 3 BEGIN DELETE mitabla WHERE llave=@llave END '..... mas opciones END


    Pero te recomiendo que mejor hagas el listar o leer en otro sp, para mas orden, porque las accciones insert, update, delete se ejecutan contra la base de datos, modifican la tabla y leer te regresa los datos, es decir son comportamientos diferentes que no sería bueno mezclar, por  ejemplo si usas ADO.Net cuando necesites, insertar, actualizar o eliminar entonces ejecutarás el procedimiento almacenado con ExecuteNonQuery mientras que para leer los datos (listar) usarás un DataAdpater y tu código no se vería limpio mas bién podría resultar confuso.

    Asi que en vez de SP_CRUD_MiClase haz un SP_Grabar_MiClase y un SP_Leer_MiClase

    ¡Saludos!


    miércoles, 3 de octubre de 2018 17:37
  • Chequea tambien la sentencia MERGE pero ten en cuenta que muchas veces una transaccion puede involucrar mas de una tabla.

    AMB

    Some guidelines for posting questions...

    AYÚDANOS A AYUDARTE, guía básica de consejos para formular preguntas

    miércoles, 3 de octubre de 2018 18:19