Foro de elhacker.net

Programación => Bases de Datos => Mensaje iniciado por: llAudioslavell en 10 Febrero 2012, 22:49 pm



Título: SQL, Problema con unos SELECT en un INSERT
Publicado por: llAudioslavell en 10 Febrero 2012, 22:49 pm
Hola a todos  ... !
Estoy creando un Procedimiento que me permita Insertar valores, pero para un campo tengo que restar 2 fechas, estas fechas se encuentran en tablas diferentes, "F_PAGO" se encuentra en la tabla PAGOS y el otro campo "F_PAGO se encuentra en la tabla PAGOS_REGISTRADOS, necesito la diferencia de estos 2 campos, que son fechas, para allar los dias de diferencias para despues multiplicarlo por 1.

CREATE PROCEDURE SP_GENERAR_MORA
AS
INSERT INTO MORA(ID_MORA,NRO_BOLETA,MONTO,MORA_INICIAL,MORA_TOTAL,RESTA,ID_CONCEPTO,ID_ESTUDIANTE)
VALUES('02',0,0.00,1.00,(DATEDIFF(DAY,(SELECT F_PAGO FROM PAGOS WHERE ID_CONCEPTO= 'CP-02'),( SELECT F_PAGO FROM PAGOS_REGISTRADOS WHERE ID_PAGO='P02' ))) * 1, 0,'CP-02','100545')

El SQL me muestra este error:

Mens 1046, Nivel 15, Estado 1, Procedimiento SP_GENERAR_MORA, Línea 5
No se permiten subconsultas en este contexto. Sólo se admiten expresiones escalares.
Mens 102, Nivel 15, Estado 1, Procedimiento SP_GENERAR_MORA, Línea 5
Sintaxis incorrecta cerca de ')'.

Me dijeron que si se puede hacer una consulta en un INSERT, pero nose por que me muestra este error ..... no domino mucho SQL, espero sus aportes, desde ya muchas gracias ^^
Salu2


Título: Re: SQL, Problema con unos SELECT en un INSERT
Publicado por: Carloswaldo en 11 Febrero 2012, 04:21 am
Puedes usar variables para evitarte los dolores de cabeza de MsSQL

Código
  1. CREATE PROCEDURE SP_GENERAR_MORA
  2. AS
  3. DECLARE @F_PAGO1 AS datetime
  4. DECLARE @F_PAGO2 AS datetime
  5. SELECT @F_PAGO1 = F_PAGO FROM PAGOS WHERE ID_CONCEPTO= 'CP-02'
  6. SELECT @F_PAGO2 = F_PAGO FROM PAGOS_REGISTRADOS WHERE ID_PAGO='P02'
  7. INSERT INTO MORA(ID_MORA,NRO_BOLETA,MONTO,MORA_INICIAL,MORA_TOTAL,RESTA,ID_CONCEPTO,ID_ESTUDIANTE) VALUES('02',0,0.00,1.00,DATEDIFF(DAY,@F_PAGO1,@F_PAGO2) * 1, 0,'CP-02','100545')


Título: Re: SQL, Problema con unos SELECT en un INSERT
Publicado por: jrivam en 10 Julio 2013, 21:18 pm
solo cambia el values() por select

CREATE PROCEDURE SP_GENERAR_MORA
AS
INSERT INTO MORA(ID_MORA,NRO_BOLETA,MONTO,MORA_INICIAL,MORA_TOTAL,RESTA,ID_CONCEPTO,ID_ESTUDIANTE)
select '02',0,0.00,1.00,(DATEDIFF(DAY,(SELECT F_PAGO FROM PAGOS WHERE ID_CONCEPTO= 'CP-02'),( SELECT F_PAGO FROM PAGOS_REGISTRADOS WHERE ID_PAGO='P02' ))) * 1, 0,'CP-02','100545'