Senhores, eu tenho um problema em um SQL Dinamico. Vou montar o exemplo:
Tenho o SQL abaixo que FUNCIONA (sei que não é a melhor forma, por isso estou procurando outra): vsql || ' Select CD_A, NM_A, NM_B, NM_C, UF, NM_D'; vsql := vsql || ' From TABELA Where '; vsql := vsql || coluna_Sql || ' = ''' || filtro_Sql || ''''; vsql := vsql || ' order by ' || campo_Ordenacao || ' ' || tipo_Ordenacao; Tentei utilizar bind variables (mas nao consegui fazer funcionar o parametro de COLUNA) Bind como parte da estrutura de tabela do SQL (parametro coluna_sql) NÃO FUNCIONA. vsql || ' Select CD_A, NM_A, NM_B, NM_C, UF, NM_D'; vsql := vsql || ' From TABELA Where '; vsql := vsql || :1 || ' = ''' || :2 || ''''; vsql := vsql || ' order by ' || :3 || ' ' || :4; USING coluna_Sql, filtro_Sql, campo_Ordenacao, tipo_Ordenacao coluna_Sql : parametro que o usuario passa escolhendo quais colunas da tabela ele vai usar para comparar filtro_Sql : parametro que o usuario passa para ser comparado campo_Ordenacao : parametro que o usuario quer ordenar a pesquisa tipo_Ordenacao : parametro desc ou asc exemplo de parametros: coluna_Sql : UF filtro_Sql : SC campo_Ordenacao : NM_A tipo_Ordenacao : DESC coluna_Sql : NM_C filtro_Sql : 'Capinzal' campo_Ordenacao : NM_B tipo_Ordenacao : ASC Sei que teria como fazer algo como: dbms_sql.parse(retorna_cursor, vsql , dbms_sql.NATIVE); Minha pergunta é se eu executar da forma acima (dbms_sql.NATIVE) o sql vai ser sempre recompilar?? Seria a mesma coisa que executar direto o vsql no OPNE retorna_cursor FOR....?? Caso nao tenha sido bem claro e puderem me ajudar eu agradeço. Att, -- Fernando Franquini - Capin Bacharel em Ciencias da Computacao - UFSC Analista de Sistemas / DBA emails: ferna...@wf5.com.br / fernando.franqu...@gmail.com Celular: (48) 99024047 Florianópolis - SC - Brasil www.wf5.com.br [As partes desta mensagem que não continham texto foram removidas]