Mestre Chiappa

Conheço essas threads do AskTom.
Porém, como têm muitos "artifícios técnicos", podem enrolar (ou assustar)
quem está iniciando.

Eu não chegaria a ser tão radical a ponto de dizer "nunca usaria"... (mas
claro que respeito sua opinião).
No caso específico, caso usasse SQL dinâmico, o mais importante seria
"validar" a string de parâmetro (com a lista).

O essencial é saber dos riscos... e foi isso que quis enfatizar.  ;)

Ah! A a solução de tabela temporária, se for viável no contexto dele, seria
melhor mesmo (e simples).

[ ]

André


Em 2 de setembro de 2010 22:19, José Laurindo <jlchia...@yahoo.com.br>escreveu:

>
>
>
> http://asktom.oracle.com/pls/apex/f?p=100:11:0::::P11_QUESTION_ID:210612357425e
> http://asktom.oracle.com/pls/apex/f?p=100:11:0::::P11_QUESTION_ID:110612348061#3653068157543são
>  duas threads Clássicas sobre o assunto, onde são debatidas as muitas
> técnicas possívels, mas ** DE FORMA ALGUMA ** eu uso 'SQL dinâmico' e
> 'fácil' na mesma frase, a não ser para dizer o quanto são conceitos
> incompatíveis... Sim, além da segurança também a performance pode ser
> Seriamente afetada por SQL dinâmico, muitas vezes ele é um pé pra se
> debugar, eu FUJO desse cara o quanto der....
> No caso em questão , imho o Realmente Fácil é vc ter uma tabela temporária
> (uma Global temporary Table, talvez) com uma coluna (numerica, já que são
> números) onde vc enfia os parâmetros , aí o SQL passou a ser fixo :
>
> SELECT nnn FROM tabela
> WHERE coluna in (select colunacomoparametro FROM tabelatemp);
>
> pronto, mais fácil que isso não tem...
>
> []s
>
> Chiappa
>
> --- Em oracle_br@yahoogrupos.com.br <oracle_br%40yahoogrupos.com.br>,
> Andre Santos <andre.psantos...@...> escreveu
>
> >
> > Gustavo
> >
> > A maneira mais fácil é através de SQL dinâmico. Ou seja, todo o comando
> será
> > uma string a ser interpretada em tempo de execução.
> > Procure pelo comando "execute immediate".
> >
> > Dentro da procedure ficaria +/- assim:
> > execute immediate "select blá, blá, blá from sua_tabela where campo in ("
> > || p_lista || ")";
> >
> > OBS.: O maior problema é que isso não fica muito seguro. Podem ocorrer
> erro
> > em tempo de execução ou, pior, um ataque por "SQL injection". Para evitar
> > esses problemas seria importante fazer uma **validação** desse parâmetro
> > (para conferir se não está fora do padrão esperado).
> >
> > [ ]
> >
> > André
> >
> >
> > Em 2 de setembro de 2010 15:31, Gustavo Queiroz
> > <gustavo...@...>escreveu:
>
> >
> > >
> > >
> > > Pessoal,
> > >
> > > Tenho uma procedure que deverá possuir um parametro que é uma lista de
> > > números, por exemplo: 1, 2, 3, 4. Essa lista deverá ser usada em uma
> > > consulta da procedure na clausula Where onde um determinado campo
> deverá ter
> > > um desses valores, utilando o "IN". Essa quantidade de números da lista
> pode
> > > ser variável, não tendo uma quantidade fixa ou padrão.
> > >
> > > Como posso fazer para ter que passar esse valor para procedure? Tentei
> > > passar como string e depois jogar direto, mas não entende como número.
> > >
> > > Obgrigado,
> > >
> > > Gustavo
> > >
> > >
> > >
> >
> >
> > [As partes desta mensagem que não continham texto foram removidas]
> >
>
>  
>


[As partes desta mensagem que não continham texto foram removidas]



------------------------------------

--------------------------------------------------------------------------------------------------------------------------
>Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira 
>responsabilidade de seus remetentes.
Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ 
--------------------------------------------------------------------------------------------------------------------------
>Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » Procedure » 
>Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: 
>http://www.oraclebr.com.br/  
------------------------------------------------------------------------------------------------------------------------
 Links do Yahoo! Grupos

<*> Para visitar o site do seu grupo na web, acesse:
    http://br.groups.yahoo.com/group/oracle_br/

<*> Para sair deste grupo, envie um e-mail para:
    oracle_br-unsubscr...@yahoogrupos.com.br

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
    http://br.yahoo.com/info/utos.html


Responder a