Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 15-09-2005
micayael micayael is offline
Miembro
 
Registrado: sep 2005
Posts: 68
Poder: 19
micayael Va por buen camino
Insert con SP - avanzado

Hola gente. Tengo un diseño de mi base de datos como muestro en la imagen.

Una persona puede ser Cliente, Proveedor, Funcioanario u otros tipos varios.

Vamos por el funcionario. Este puede ser o no un comisionista. Cuando llega al nivel de comisionista puede ser creativo (diseñador) o no.

Ahora, quiero hacer un Store procedure que inserte a estas personas. Que me conviene mas.

Hacer un SP por tipo de persona (cliente, funcionario, proveedor) o hacer un SP por tablas por ejemplo.

SP_ALTA_PERSONA : dara de alta la persona y si el tipo indica que es funcionario llamaria a SP_ALTA_FUNCIONARIO y si es comisionista SP_ALTA_COMISIONISTAS y asi sucesivamente.

Como podria yo hacer un rollback o algo que deshaga lo ingresado si es que ocurre un error al nivel de comisionista por ejemplo. Es decir ya se habra dado de alta en la tabla persona y en funcionario.

Responder Con Cita
  #2  
Antiguo 15-09-2005
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por micayael
...Hacer un SP por tipo de persona (cliente, funcionario, proveedor) o hacer un SP por tablas por ejemplo...
Yo haría un SP por cada Tabla (uno simple) y luego uno para cada clase, de forma que no repitas código; Es decir el SP de cada tabla añade el registro a esa tabla y luego los SP de clase lo único que hacen es llamar a varios SP de tabla.

Cita:
Empezado por micayael
...Como podria yo hacer un rollback o algo que deshaga lo ingresado si es que ocurre un error al nivel de comisionista por ejemplo. Es decir ya se habra dado de alta en la tabla persona y en funcionario.
En los SP de Clase utiliza una única transacción y si algun SP de tabla falla deshaces todo el SP de clase.
Espero haberme explicado bien.
Se que funciona y bien, porque ésta misma estructura yo la utilizo, pero en Delphi, en lugar de con SP (Modelo de persistencia).
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 15-09-2005
micayael micayael is offline
Miembro
 
Registrado: sep 2005
Posts: 68
Poder: 19
micayael Va por buen camino
Perfecto. Por lo que parece te la sabes todas neftali jeje.

Y hay forma de ejecutar el commit por programacion ?? o si se completa ya graba y listo?

Otra cosita cuando trato de llamar a otro sp desde un SP padre me da un error
que estaria mal? quizas no sea la forma adecuada de llamar. Da error en el select y con ; al final tambien. SP_PRUEBA1 no tiene parametros de entrada

CREATE PROCEDURE SP_PRUEBA2
AS
BEGIN
SELECT * FROM SP_PRUEBA1
END
Responder Con Cita
  #4  
Antiguo 15-09-2005
micayael micayael is offline
Miembro
 
Registrado: sep 2005
Posts: 68
Poder: 19
micayael Va por buen camino
AH. dice que si no funciona deshago el SP de clase (que me imagino que es un SP normal que llama a los otros).

Como lo deshago tambien. Con un rollback, pero como invoco el rollback?
Responder Con Cita
  #5  
Antiguo 15-09-2005
Avatar de rastafarey
rastafarey rastafarey is offline
Miembro
 
Registrado: nov 2003
Posts: 927
Poder: 21
rastafarey Va por buen camino
Resp

El select que tienes lo debes hacer son un
Código SQL [-]
for select into
ese es el problema.

Y lo de deshacer no e snecesario ya que esto acurre solo por que va ligado en una misma transaccion. Lo que quiere decir que todo se ejecuta bien o no se ejecuta nada pero no a medias.
__________________
Todo se puede, que no exista la tecnología aun, es otra cosa.
Responder Con Cita
  #6  
Antiguo 15-09-2005
micayael micayael is offline
Miembro
 
Registrado: sep 2005
Posts: 68
Poder: 19
micayael Va por buen camino
AAH. PERO Y SI MI SP AL QUE LLAMO NO TIENE PARAMETRO DE SALIDA?
O TIENE QUE TENER SI O SI?

Pregunto por el select into. Por el into yo asigno a una variable el retorno del SP al que llamo.
Responder Con Cita
  #7  
Antiguo 27-09-2005
Avatar de rastafarey
rastafarey rastafarey is offline
Miembro
 
Registrado: nov 2003
Posts: 927
Poder: 21
rastafarey Va por buen camino
Resp

Solo ejecutas la intruccion sql es todo.
__________________
Todo se puede, que no exista la tecnología aun, es otra cosa.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 01:35:54.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi