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

[SOLUCIONADO] Procedimiento almacenado con dos insert

Estas en el tema de Procedimiento almacenado con dos insert en el foro de SQL Server en Foros del Web. Eestoy intentando hacer dos insert en un procedimiento almacenado lo curioso es que no me inserta cuando meto el segundo insert, alguienp uede ayudarme a ...
  #1 (permalink)  
Antiguo 11/12/2013, 10:31
Avatar de aid_val  
Fecha de Ingreso: mayo-2013
Ubicación: Guanajuato
Mensajes: 302
Antigüedad: 10 años, 11 meses
Puntos: 5
Procedimiento almacenado con dos insert

Eestoy intentando hacer dos insert en un procedimiento almacenado lo curioso es que no me inserta cuando meto el segundo insert, alguienp uede ayudarme a checar que es lo que estoy haciendo mal porfa..

ESTE ES MI CODIGO
Código SQL:
Ver original
  1. USE [sipro_inoc]
  2. GO
  3. /****** Object:  StoredProcedure [dbo].[PA_INSERTAR_CONTRATO]    Script Date: 12/11/2013 09:03:32 ******/
  4. SET ANSI_NULLS ON
  5. GO
  6. SET QUOTED_IDENTIFIER ON
  7. GO
  8. ALTER PROC [dbo].[PA_INSERTAR_CONTRATO]
  9. @nombre_obra VARCHAR(500),
  10. @clave_contrato VARCHAR(150),
  11. @fecha_contrato nvarchar(20),
  12. @fecha_inicio_contrato nvarchar(20),
  13. @fecha_terminacion_contrato nvarchar(20),
  14. @monto_asignado NVARCHAR(150),
  15. @monto_contrato NVARCHAR(150),
  16. @numero_expediente_contrato VARCHAR(120),
  17. @anticipo_contrato NVARCHAR(150)
  18.  
  19. AS
  20. BEGIN TRY
  21.  
  22. BEGIN TRAN
  23.         SELECT CAST(@fecha_contrato  AS DATE)
  24.         SELECT CAST(@fecha_inicio_contrato AS DATE)
  25.         SELECT CAST(@fecha_terminacion_contrato AS DATE)
  26.    
  27.        
  28.  
  29.        
  30.         INSERT INTO contrato(id_obra,
  31.         clave_contrato,
  32.         fecha_contrato,
  33.         fecha_inicio_contrato,
  34.         fecha_terminacion_contrato,
  35.         monto_contrato,
  36.         numero_expediente_contrato,
  37.         anticipo_contrato)
  38.         VALUES
  39.         ((SELECT id_obra FROM obra WHERE nombre_obra=@nombre_obra ),
  40.         @clave_contrato ,
  41.         @fecha_contrato ,
  42.         @fecha_inicio_contrato ,
  43.         @fecha_terminacion_contrato ,
  44.         (SELECT CAST(@monto_contrato AS MONEY)),
  45.         @numero_expediente_contrato,
  46.         (SELECT CAST(@anticipo_contrato  AS MONEY)))
  47.        
  48.         INSERT INTO Asignados (id_contrato,fecha,asignado )
  49.         VALUES ((SELECT id_contrato FROM contrato WHERE clave_contrato = @clave_contrato ),@fecha_contrato , (SELECT CAST(@monto_asignado  AS MONEY)))
  50.     COMMIT
  51. END TRY
  52. BEGIN CATCH
  53.     ROLLBACK
  54.     PRINT error_message()
  55. END CATCH
  #2 (permalink)  
Antiguo 11/12/2013, 10:33
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Procedimiento almacenado con dos insert

donde asignas el valor a @clave_contrato, la tienes declarada pero no le asignas un valor en ningun lado......
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 11/12/2013, 10:35
Avatar de aid_val  
Fecha de Ingreso: mayo-2013
Ubicación: Guanajuato
Mensajes: 302
Antigüedad: 10 años, 11 meses
Puntos: 5
Respuesta: Procedimiento almacenado con dos insert

Si en los valores despues de un select de obra ahi se encuentra
  #4 (permalink)  
Antiguo 11/12/2013, 10:41
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Procedimiento almacenado con dos insert

si pero no esta tomando valores, si te fijas

Código SQL:
Ver original
  1. ((SELECT id_obra FROM obra WHERE nombre_obra=@nombre_obra ),
  2.         @clave_contrato ,
  3.         @fecha_contrato ,
  4.         @fecha_inicio_contrato ,
  5.         @fecha_terminacion_contrato ,
  6.         (SELECT CAST(@monto_contrato AS MONEY)),
  7.         @numero_expediente_contrato,
  8.         (SELECT CAST(@anticipo_contrato  AS MONEY)))
pero no tienes ningun from, de donde obtiene el valor @clave_contrato??? todos esos valores se insertan en blanco ya que no tienes un from mas que en el de obra, las demas variables quedan vacias, si o que quieres es que todos los valores se tomen de obra entonces debes de hacer:

Código SQL:
Ver original
  1. SELECT id_obra ,
  2.         @clave_contrato=clave_contrato ,
  3.         @fecha_contrato=fecha_contrato,
  4.         @fecha_inicio_contrato=inicio_contrato,
  5.         @fecha_terminacion_contrato=----blabla,
  6.         (SELECT CAST(@monto_contrato=monto_contacto AS MONEY)),
  7.         @numero_expediente_contrato,
  8.         (SELECT CAST(@anticipo_contrato  AS MONEY))
  9. FROM obra WHERE nombre_obra=@nombre_obra
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #5 (permalink)  
Antiguo 11/12/2013, 10:48
Avatar de aid_val  
Fecha de Ingreso: mayo-2013
Ubicación: Guanajuato
Mensajes: 302
Antigüedad: 10 años, 11 meses
Puntos: 5
Respuesta: Procedimiento almacenado con dos insert

Esque esos los recibe de mi aplicativo
  #6 (permalink)  
Antiguo 11/12/2013, 10:54
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Procedimiento almacenado con dos insert

ok error de percepcion :P

Código SQL:
Ver original
  1. INSERT INTO Asignados (id_contrato,fecha,asignado )
  2.         VALUES ((SELECT id_contrato FROM contrato WHERE clave_contrato = @clave_contrato ),@fecha_contrato , (SELECT CAST(@monto_asignado  AS MONEY)))
  3.     COMMIT TRAN
  4. END TRY

que no te falta en el commit el nombre de la transaccion en este caso TRAN?
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #7 (permalink)  
Antiguo 11/12/2013, 11:05
Avatar de aid_val  
Fecha de Ingreso: mayo-2013
Ubicación: Guanajuato
Mensajes: 302
Antigüedad: 10 años, 11 meses
Puntos: 5
Respuesta: Procedimiento almacenado con dos insert

Si de hecho se lo puse pero ni asi funciona. el problema me surge cuando pongo el segundo insert, si hecho andar el procedimiento solo con el primer insert no tengo problema
  #8 (permalink)  
Antiguo 11/12/2013, 11:08
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Procedimiento almacenado con dos insert

a ver cuando haces el segundo insert que pasa???? te manda algun error??? o simplemente no hace el insert??
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #9 (permalink)  
Antiguo 11/12/2013, 11:13
Avatar de aid_val  
Fecha de Ingreso: mayo-2013
Ubicación: Guanajuato
Mensajes: 302
Antigüedad: 10 años, 11 meses
Puntos: 5
Respuesta: Procedimiento almacenado con dos insert

No me hace ninguno. Pero si lo quito me inserta el primero.

Y no me envia errores
  #10 (permalink)  
Antiguo 11/12/2013, 11:18
Avatar de aid_val  
Fecha de Ingreso: mayo-2013
Ubicación: Guanajuato
Mensajes: 302
Antigüedad: 10 años, 11 meses
Puntos: 5
Respuesta: Procedimiento almacenado con dos insert

Lo he solucionado mi problema estaba en la tabla, tenia el dato como decimal no como dinero.

Error de mi parte

Gracias por el tiempo

Etiquetas: almacenado, fecha, insert, procedimiento, select
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 02:08.