Pessoal, Gostaria de saber se é uma boa abordagem, criar pacotes utilizando variáveis para receber consultas e, dependendo de determinadas condições, executar uma ou outra através de concatenação.
Coloquei um exemplo abaixo somente para ilustrar o que eu quero dizer. Quais as implicações desse tipo de abordagem? CREATE OR REPLACE PACKAGE pacote_01 AS DATA_1 DATE; DATA_2 DATE; FLAG_1 NUMBER; DATE_NULL DATE := NULL; FLAG_2 NUMBER := NULL; SEL_XX VARCHAR2 (5000); ABC_00 VARCHAR2 (3000) := 'SELECT /*+ RULE */ H.COLUNA1, H.COLUNA2, H.COLUNA3, H.COLUNA4, H.COLUNA5, COUNT(1), SUM(H.COLUNA6), SUM(H.COLUNA7), SUM(H.COLUNA8), SUM(DECODE(H.COLUNA6, (NVL(H.COLUNA7 + H.COLUNA8, 0) + NVL(H.COLUNA9 , 0) + NVL(H.COLUNA10 + H.COLUNA11 + H.COLUNA12, 0) ), 0, 1)' ; ABC_01 VARCHAR2 (3000) := ' H.COLUNA_A, H.COLUNA_B, H.COLUNA_C, H.COLUNA_D FROM TABELA1 H WHERE H.COLUNA_50 = :BIND_1 AND H.COLUNA_51 = :BIND_2 AND F.COLUNA_52 = CONDICAO_1'; ABC_02 VARCHAR2 (3000) := ' H.COLUNA_D, H.COLUNA_E, H.COLUNA_F, H.COLUNA_G FROM TABELA1 H WHERE H.COLUNA_50 > :BIND_1 AND H.COLUNA_51 < :BIND_2 AND H.COLUNA_52 = CONDICAO_1'; PROCEDURE A_1 ( BIND_1 NUMBER, BIND_2 DATE, CONDICAO_1 NUMBER ); END pacote_01; CREATE OR REPLACE PACKAGE BODY pacote_01 AS PROCEDURE A_1 ( BIND_1 NUMBER, BIND_2 DATE, CONDICAO_1 NUMBER ) IS DATA DATE; FLAG_1 VARCHAR2(4); FLAG_2 VARCHAR2(50); OPCAO NUMBER ; BEGIN IF OPCAO = 1 THEN SEL_XX := ABC_00 || ABC_01; ELSIF P_OPCAO = 2 THEN SEL_XX := ABC_00 || ABC_02; END IF; END A_1; END pacote_01;