Estou continuando meus estudos sobre SQL_MACRO no Oracle. Ainda não consegui achar uma solução elegante para o IN sem que envolva gambiarra. Mas isso deixo para atualizar o referido post. Hoje quero registrar como é possível tratar os parâmetros para gerar o macro.
Neste primeiro caso, só para ilustrar, vou mostrar um parâmetro que se for 0, o WHERE será diferente:
CREATE OR REPLACE FUNCTION teste_function(obj_chave number) RETURN VARCHAR2 SQL_MACRO IS BEGIN RETURN 'SELECT * FROM tabela WHERE '|| CASE WHEN obj_chave=0 THEN 'FOTR_CD_CHAVE=''X''' ELSE 'FOTR_CD_CHAVE=''Y''' END; END;
Basicamente concatenamos a expressão com uma estrutura condicional. Também podemos usar funções que faça condicional, como o NVL (é até mais recomendável, já que fica mais limpo o código)
Nenhum comentário:
Postar um comentário