Ver Mensaje Individual
  #2  
Antiguo 11-11-2016
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola
Cita:
Empezado por ronalg Ver Mensaje
...
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
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita