Ver Mensaje Individual
  #1  
Antiguo 10-04-2026
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Ubicación: Toledo - España
Posts: 1.418
Reputación: 21
Angel.Matilla Va por buen camino
Usando variables

Hace tiempo me resolvisteis una duda que tenía sobre como usar variables en un query. Me hace falta volver a usar esa metodología.
Tengo esta tabla:

y sobre la misma ejecuto este query:
Código SQL [-]
SELECT CAST(RDB$GET_CONTEXT('USER_TRANSACTION', 'IMPDTO') AS DOUBLE PRECISION),
       RDB$SET_CONTEXT('USER_TRANSACTION', 'IMPDTO', (SELECT SUM(ImpDto) FROM Factura WHERE NumFactura IN (3,4)))
  FROM Factura WHERE NumFactura IN (3,4)
y el resultado que me da es este:

La realidad es que debería darme sólo la segunda línea. ¿Por qué me da dos filas en vez de una sola? Y es que el problema viene porque si trato de usar esa variable en el query en el que de verdad me hace falta:
Código SQL [-]
SELECT RDB$SET_CONTEXT('USER_TRANSACTION', 'IMPDTO', (SELECT SUM(ImpDto) FROM Factura WHERE NumFactura IN (3,4))),
       CAST(RDB$GET_CONTEXT('USER_TRANSACTION', 'IMPDTO') AS DOUBLE PRECISION) ImpDto, 
       SUM(Bruto) Bruto, 
       CASE WHEN SUM(Bruto - ImpDto) = SUM(Bruto) THEN 0 ELSE SUM(Bruto - ImpDto) END Base, 
       SUM(Iva) Iva, SUM(Bruto - ImpDto + Iva) Total
  FROM Factura WHERE NumFactura IN (3,4)
Me hace esto

Que, evidentemente, no es lo que busco porque no me devuelve el valor de la variable definida. Aunque, curiosamente, el CASE del query sí va por el lado adecuado. No lo entiendo.

Última edición por Angel.Matilla fecha: 10-04-2026 a las 12:22:14.
Responder Con Cita