Hola a todos.
Me he encontrado con una situacion nueva y no he encontrado la forma de
reselverla sin un cursor de solo lectura.
Tengo una tabla con operaciones, en el que el unico dato que me hace falta
es el numero de operacion.
Este numero de operacion se lo paso a una funcion definida por el usuario
que me devuelve un tipo table con x filas.
Debo de insertar en una tabla de anotaciones todas las anotaciones que me
devuelvan un rango de operaciones especifico, por ejemplo desde la operacion
120 a la 467.
Con la instruccion select * from dbo.funcion(operacion) consigo las
anotaciones de una operacion y con insert anotaciones select * from
dbo.funcion(operacion) inserto las anotaciones que corresponden a una
operacion.
Pero para insertar las anotaciones desde la operacion 120 a la 467 no
encuentro la forma a no ser que recorra la tabla operaciones on un cursor
desde la operacion 120 a la 467.
El cursor recorre la siguiente instruccion select operacion from operaciones
where operacion>0 and operacion<F7
Alguien encuentra la forma de hacer esto sin un cursor?
La funcion es esta:
CREATE FUNCTION CG_DR_ASILEASING (@OPERACION INT)
RETURNS @TABLA TABLE (OPERACION INT,TIPO CHAR(1),APUNTE INT,CUENTA
VARCHAR(10),FECHA DATETIME,DOCUMENTO VARCHAR(20),DEBE DECIMAL(15,2),HABER
DECIMAL(15,2))
AS
BEGIN
aqui definicion de varias variables para sumar y restar columnas.
e inserto las filas en el la tabla que sera devuelta.
INSERT @TABLA VALUES (@OPERACION,CASE WHEN @DEBE!=0 THEN 'D' ELSE 'H'
END,1,@CDERECHOS,@FECHAVAR,@DOCUMENTO,@DEBE,@HABER)
INSERT @TABLA VALUES (@OPERACION,CASE WHEN @DEBE!=0 THEN 'D' ELSE 'H'
END,2,@CINTDIF,@FECHAVAR,@DOCUMENTO,@DEBE,@HABER)
INSERT @TABLA VALUES (@OPERACION,CASE WHEN @DEBE!=0 THEN 'D' ELSE 'H'
END,3,@CIVADIF,@FECHAVAR,@DOCUMENTO,@DEBE,@HABER)
INSERT @TABLA VALUES (@OPERACION,CASE WHEN @DEBE!=0 THEN 'D' ELSE 'H'
END,4,@CPLARGO,@FECHAVAR,@DOCUMENTO,@DEBE,@HABER)
INSERT @TABLA VALUES (@OPERACION,CASE WHEN @DEBE!=0 THEN 'D' ELSE 'H'
END,5,@CPCORTO,@FECHAVAR,@DOCUMENTO,@DEBE,@HABER)
RETURN
END
Saludos y gracias.
Leer las respuestas