Hola
Cita:
Empezado por ronalg
...
talvez sea un disparate pero bueno, la idea es:
Si el parámetro cod_cliente es -1 (Que devuelva todos los registros de todos los clientes)
Si el parámetra cod_cliente es >1 (que devuelva todos los registros de ese cliente)
|
Basándome en los campos que mostras en tu código, podrías hacer:
Código SQL
[-]
SET TERM ^ ;
CREATE OR ALTER PROCEDURE SP_TEST (
COD_CLIENTE INTEGER )
RETURNS (
R_CODIGO INTEGER,
R_NUMERO_CV INTEGER,
R_TIPO_TRANSACCION INTEGER )
AS
DECLARE VARIABLE SENTENCIA VARCHAR(512);
BEGIN
IF ( COD_CLIENTE = -1 ) THEN
SENTENCIA = 'SELECT A.CODIGO, A.NUMERO_CV, A.TIPO_TRANSACCION '||
'FROM TB_COMPRAS_VENTAS A';
ELSE
SENTENCIA = 'SELECT A.CODIGO, A.NUMERO_CV, A.TIPO_TRANSACCION '||
'FROM TB_COMPRAS_VENTAS A' ||
'WHERE A.REF_CLIENTE = ' || :COD_CLIENTE;
FOR EXECUTE STATEMENT SENTENCIA
INTO
:R_CODIGO,
:R_NUMERO_CV,
:R_TIPO_TRANSACCION
DO
SUSPEND;
END^
SET TERM ; ^
Ejemplo de uso:
Código SQL
[-]SELECT R_CODIGO, R_NUMERO_CV, R_TIPO_TRANSACCION FROM SP_TEST(6)
Saludos