Antes de responder, uma observação : SQL dinâmico é algo que **
deveria ** ser usado em pequenas doses, em rotinas simples e isoladas,
pois vc PAGA UM PREÇO em performance pra usar isso, e esse preço NÂO É
 muito barato, como mostrado em http://asktom.oracle.com (procure
pelas palavras-chave DYNAMIC SQL PERFORMANCE que vc acha ** diversos
** casos). Eu mesmo tenho a minha história de terror sobre isso : era
um sistema de RH, onde TODOS os cálculos eram feitos via SQL dinãmico,
com um ou dois usuários ia bem, a hora que foram instalar num cliente
maior, com 5 ou seis usuários simultãneos, o negócio simplesmente
PAROU, CAIU NO CHAU, fez pluft, caput. Me chamaram, mexi no banco, mas
simplesmente NÂO HAVIA mais o que fazer, o gasto de CPU extra do SQL
dinâmico simplesmente estava matando o banco, fizesse eu o que fosse,
não teve como consertar...  ==>> Assim sendo, 32 Kb, deveria dar &
sobrar, pois SQL dinãmico deveria ser usado MUITO POUCO, ok ??

 isto posto, aviso dado, a resposta : 32 Kb é o limite para SQL
dinâmico com EXECUTE IMMEDIATE, pra executar SQLs maiores que isso vc
deve usar as rotinas da package DBMS_SQL, com elas vc consegue passar
um ARRAY com as linhas do SQL a executar, aí obviamente vc fica
limitado só pela RAM e pelos limites de array do PL/SQL, em teoria.

[]s

 Chiappa
--- Em oracle_br@yahoogrupos.com.br, "faogx9" <[EMAIL PROTECTED]> escreveu
> Srs,
> Temos uma rotina em pl/sql que constroi e executa uma instrucao sql 
> dinamicamente.
> 
> A variavel que armazena a instrucao sql ultrapassa 32kb (limite do 
> varchar2 no pl/sql), geralmente passando de 1mb.
> 
> A solucao que temos no momento é armazenar o texto num campo clob e 
> transferi-los a cada 32k para variaveis pre-definidas no codigo. 
> 
> Procedure xxx
> 
> begin
>    v1: = primeiros 32k do clob
>    v2: = proximos 32k do clob....
> 
>    execute immediate v1 || v2 || v3 || v4.......
> end;
> 
> 
> o problema nesta solução é que precisamos definir uma grande 
> quantidade variaveis ....
> 
> Alguem possui uma solucao mais interessante?
> utilizamos a vs 8.1.7.4




--------------------------------------------------------------------------------------------------------------------------
Atenção! As mensagens deste grupo são de acesso público e de inteira 
responsabilidade de seus remetentes.
Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ 
--------------------------------------------------------------------------------------------------------------------------_____________________________________________________________________
Area de download do grupo - http://www.4shared.com/dir/101727/a4dcc423  
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:
    [EMAIL PROTECTED]

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

 


Responder a