Pagando os pecados p/ desenvolver Microsiga no Oracle, né? Aqui a gente 
também tá pagando os nossos...
Você teria algum modelo de preparação da query COM BIND VARIABLES p/ o 
ADVPL? Algum clippeiro antigo saberia me dizer como fazê-lo? Desde já, 
obrigado.

Reginaldo Ribeiro - DBA Oracle
http://www.dbcom.com.br

[EMAIL PROTECTED]
skype: dbcom_it_experts
55 11 92344290



Anderson Haertel Rodrigues - FLN wrote:
> Marcelo,
>
> Não existe Macro Substituição em Oracle (dá-lhe clipper), eu penso em 
> duas alternativas, e entre as duas, prefiro a 2a.
>
> 1)
> vSQL :=     'SELECT /*+ INDEX(F2 SF2010A) */ SUM(F2_VALFAT)VALFAT '||
>                  'INTO ('||'nZM_FAT' || 
> TO_CHAR(ADD_MONTHS(SYSDATE,nLoop),'MON'))'||
>                  '  FROM SF2010 F2 '||
>                  ' WHERE D_E_L_E_T_ = ' ' '||
>                  ' AND F2_TIPO = ''N'''||
>                  'AND SUBSTR(F2_EMISSAO,1,6) = '||
>                  (TO_CHAR(ADD_MONTHS(SYSDATE,-(nLoop)),'YYYYMM')) ||
>                 ' AND F2_LOJA = IN_A1_LOJA '||
>                 ' AND F2_CLIENTE = IN_A1_COD;';
>
> execute immediate vSQL;
>
> Verifique a questão de sintaxe, e quotes.....
>
> 2)
>
> if  TO_CHAR(ADD_MONTHS(SYSDATE,nLoop),'MON')) = 1
>   SELECT /*+ INDEX(F2 SF2010A) */ SUM(F2_VALFAT)VALFAT
>   INTO nZM_FATJAN
>   ...
> elsif  TO_CHAR(ADD_MONTHS(SYSDATE,nLoop),'MON')) = 2
>   SELECT /*+ INDEX(F2 SF2010A) */ SUM(F2_VALFAT)VALFAT
>   INTO nZM_FATFEV
> ...
> elsif ...
> end if;
>
> A sintaxe pode estar errada, verifique a mesma.
>
> Eu prefiro a 2a por causa do não uso do SQL Dinâmico, sempre que 
> possível, prefiro usar SQL estático e bem bindado (lembre-se das 
> binds) ;-).
>
> Atenciosamente,
>
> Anderson Haertel Rodrigues
> Administrador de Banco de Dados
> Florianópolis/SC - [EMAIL PROTECTED]
>
> -----Mensagem original-----
> De: oracle_br@yahoogrupos.com.br 
> [mailto:[EMAIL PROTECTED] nome de Marcelo
> Enviada em: terça-feira, 22 de agosto de 2006 14:16
> Para: oracle_br@yahoogrupos.com.br
> Assunto: [oracle_br] Converter String em variável.
>
>
>
> Olá pessoal,
>
> Estou com uma dúvida na montagem de uma procedure que faz atualização de
> faturamento.
> O que eu preciso é conseguir converter uma string numa variável em 
> tempo de
> execução.
> Por exemplo:
> Tenho 12 variáveis, uma para cada mês do ano.
> nZM_FATJAN number;
> nZM_FATFEV number;
> nZM_FATMAR number;
> .....
> nZM_FATDEZ number;
> nLoop Number := 1;
>
> O que tenho intenção de fazer é transformar a string ('nZM_FAT' ||
> TO_CHAR(ADD_MONTHS(SYSDATE,-9),'MON')) nas variáveis já declaradas.
> Em outras linguagens de programação usa-se o '&' para converter em 
> linha de
> código. Mas não sei qual seria para PL/SQL.
> While(nLoop < 13) Loop
>     
>     SELECT /*+ INDEX(F2 SF2010A) */ SUM(F2_VALFAT)VALFAT
>       INTO ('nZM_FAT' || TO_CHAR(ADD_MONTHS(SYSDATE,nLoop),'MON'))
>       FROM SF2010 F2
>      WHERE D_E_L_E_T_ = ' '
>        AND F2_TIPO = 'N'
>        AND SUBSTR(F2_EMISSAO,1,6) =
> (TO_CHAR(ADD_MONTHS(SYSDATE,-(nLoop)),'YYYYMM')) 
>        AND F2_LOJA = IN_A1_LOJA
>        AND F2_CLIENTE = IN_A1_COD;
>        nLoop := nLoop + 1;
>   End Loop;
>
> Agradeço qualquer sugestão.
>
>
> Marcelo Alberto Lauschner
> Depto. De Informática
> Auto Pratense Ltda
> * - Fax: (0XX54) 3242-3615
> * - E-mail:  <mailto:[EMAIL PROTECTED]>
> [EMAIL PROTECTED]


--------------------------------------------------------------------------------------------------------------------------
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/ 
--------------------------------------------------------------------------------------------------------------------------__________________________________________________________________

OPORTUNIDADES DE TRABALHO, VAGAS, EMPREGOS PARA PROFISSIONAIS ORACLE VISITE: 
http://www.oraclebr.com.br/
__________________________________________________________________
Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine  
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

 


Reply via email to