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