Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Ayuda con un Procedimiento

Estas en el tema de Ayuda con un Procedimiento en el foro de Bases de Datos General en Foros del Web. Hola, tengo el siguiente procedimiento: CREATE Procedure Personas_Insertar @PENIFPer char(9), @PEApe1 char(30), @PEApe2 char(30), @PECodPrf int, AS Insert Into Persones( PENIFPer, PEApe1, PEApe2, PECodPrf, ) ...
  #1 (permalink)  
Antiguo 09/03/2005, 13:20
 
Fecha de Ingreso: marzo-2004
Mensajes: 42
Antigüedad: 20 años, 10 meses
Puntos: 0
Ayuda con un Procedimiento

Hola, tengo el siguiente procedimiento:

CREATE Procedure Personas_Insertar
@PENIFPer char(9),
@PEApe1 char(30),
@PEApe2 char(30),
@PECodPrf int,
AS
Insert Into Persones(
PENIFPer,
PEApe1,
PEApe2,
PECodPrf,
)
Values(
@PENIFPer,
@PEApe1,
@PEApe2,
@PECodPrf,
)
GO

Cómo puedo hacer para que cuando me llegue un 0 en @PECodPrf el procedimiento me guarde un valor NULL?

Gracias,

Alfred
  #2 (permalink)  
Antiguo 09/03/2005, 14:07
Avatar de Jorge_Mota  
Fecha de Ingreso: diciembre-2002
Ubicación: Chapinlandia :-D
Mensajes: 725
Antigüedad: 22 años, 1 mes
Puntos: 11
CREATE Procedure Personas_Insertar
@PENIFPer char(9),
@PEApe1 char(30),
@PEApe2 char(30),
@PECodPrf int,
AS
Insert Into Persones(
PENIFPer,
PEApe1,
PEApe2,
PECodPrf
)
Values(
@PENIFPer,
@PEApe1,
@PEApe2,
case @PECodPrf when 0 then null else @PECodPrf END
)
__________________
Jorge Mota
Blog
Gubiz estafa
  #3 (permalink)  
Antiguo 09/03/2005, 15:45
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años, 8 meses
Puntos: 25
CREATE Procedure Personas_Insertar
@PENIFPer char(9),
@PEApe1 char(30),
@PEApe2 char(30),
@PECodPrf int,
AS
Insert Into Persones(
PENIFPer,
PEApe1,
PEApe2,
PECodPrf
)
Values(
@PENIFPer,
@PEApe1,
@PEApe2,
IsNull(@PECodPrf, 0)
)

Auque la manera mas ortodoxa (y de hecho mas efectiva) sería que en la tabla agregues un valor por default (el 0) para ese campo y te olvides de ello en el resto de tu aplicacion
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche

Última edición por Mithrandir; 09/03/2005 a las 15:47
  #4 (permalink)  
Antiguo 10/03/2005, 06:36
 
Fecha de Ingreso: marzo-2004
Mensajes: 42
Antigüedad: 20 años, 10 meses
Puntos: 0
Es que no le puedo poner un 0 a ese campo ya que es un código que va a buscar una descripción a otra tabla. Como exigo integridad referencial, si no encuentra el 0 en la otra tabla peta. Por tanto, o le pongo en las tablas relacionadas un código 0 con una descripción en blanco (chapuza) o tengo que ponerle un Null a la tabla principal... Siendo así, la mejor solución es la de hacerlo en el procedimiento, no?
  #5 (permalink)  
Antiguo 10/03/2005, 07:51
 
Fecha de Ingreso: marzo-2004
Mensajes: 42
Antigüedad: 20 años, 10 meses
Puntos: 0
Ya me ha funcionado. En vez de ISNULL(@variable,0), la función que hay que poner es NULLIF(@variable,0). Así, si llega un 0 guarda un NULL. Gracias por la ayuda.
  #6 (permalink)  
Antiguo 10/03/2005, 15:15
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años, 8 meses
Puntos: 25
Tienes razón, no presté atencion a tu párrafo inicial y supuse que querías un 0 cuando llegara un NULL

Pero que bueno que has dado con la funcion adecuada
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:51.