Valeu Marcelo,
 
O problema estava do resultado do substr mesmo.
 
Obrigado
 
Gerson Luz
 

   _____  

De: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em
nome de Marcelo
Enviada em: sexta-feira, 22 de setembro de 2006 16:00
Para: oracle_br@yahoogrupos.com.br
Assunto: RES: [oracle_br] to_number


Suando para atualizar Microsiga no Oracle?

Eu fiz uma simulação aqui na minha base teste compilando a procedure sem
retorno e atualizou os preços corretamente.

CREATE OR REPLACE  PROCEDURE "SIGA"."U_MUDAPRECO" (IN_PRODUTO    
    in Char,
IN_PRECO      in Number
) is
iPreco Number;
begin
  iPreco := IN_PRECO * 0.90;
  UPDATE SB1010 SET B1_PRV1 = iPreco WHERE B1_COD = IN_PRODUTO;
  COMMIT;
  UPDATE DA1010
     SET DA1_PRCVEN = (iPreco * (SELECT TO_NUMBER(SUBSTR(DA0_DESCRI, 1, 1)
|| ',' ||
                                                  SUBSTR(DA0_DESCRI, 3, 4))
                                   FROM DA0010
                                  WHERE DA0_CODTAB = DA1_CODTAB))
   WHERE DA1_CODPRO = IN_PRODUTO;
  COMMIT;
end U_MudaPreco;

Valores da tabela DA0010

DA DA0 DA0_DESCRI                     DA0_DATD DA0_H DA0_DATA DA0_H DA0 D D
D R_E_C_N_O_ R_E_C_D_E_L_
-- --- ------------------------------ -------- ----- -------- ----- --- - -
- ---------- ------------
   001 1.35                           20060922 00:00          23:59     1 1
1            0

1 linha selecionada.

Executei a procedure.

exec U_MUDAPRECO('SP1',5);

E consultei o produto que mudou o preço que era igual ao produto ‘SP2’.

DA1_CODPRO      DA1_PRCVEN
--------------- ----------
SP1                  6,075
SP2                     10

2 linhas selecionadas.

E no SB1010 também.
B1_COD             B1_PRV1
--------------- ----------
SP1                    4,5

1 linha selecionada.

Não sei se há algum problema com o campo DA0_DESCRI que talvez não retorna
valores corretos.
Tente executar o update no analyzer para ver se realmente esteja
transformando os valores.
No mais a procedure está correta.

Espero que ajude.

Marcelo Alberto Lauschner 
Depto. De Informática
Auto Pratense Ltda
* - Fax: (0XX54) 3242-3615
* - E-mail:  <mailto:[EMAIL PROTECTED]>
[EMAIL PROTECTED]

  _____  

De: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em
nome de Gerson Luz - Dpto. TI
Enviada em: sexta-feira, 22 de setembro de 2006 14:58
Para: oracle_br@yahoogrupos.com.br
Assunto: [oracle_br] to_number

Boa Tarde

Criei a procedure abaixo, e o segundo update não esta funcionando, se eu
tirar o TO_NUMBER e colocar o valor já formatado o update funciona.
Por favor, onde estou errando?


create or replace procedure U_MudaPreco(IN_PRODUTO    in Char,
                                        IN_PRECO      in Number,
                                        OUT_RESULTADO out Number) is
  iPreco Number;
begin
  iPreco := IN_PRECO * 0.90;
  UPDATE SB1800 SET B1_PRV1 = iPreco WHERE B1_COD = IN_PRODUTO;
  COMMIT;
  UPDATE DA1800
     SET DA1_PRCVEN = (iPreco * (SELECT TO_NUMBER(SUBSTR(DA0_DESCRI, 1, 1)
|| ',' ||
                                                  SUBSTR(DA0_DESCRI, 3, 4))
                                   FROM DA0800
                                  WHERE DA0_CODTAB = DA1_CODTAB))
   WHERE DA1_CODPRO = IN_PRODUTO;
  COMMIT;
  OUT_RESULTADO := 1;
end U_MudaPreco; 


Grato

Gerson Luz

-- 
No virus found in this outgoing message.
Checked by AVG Free Edition.
Version: 7.1.405 / Virus Database: 268.12.7/454 - Release Date: 21/9/2006







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

 


--
No virus found in this incoming message.
Checked by AVG Free Edition.
Version: 7.1.405 / Virus Database: 268.12.7/454 - Release Date: 21/9/2006



-- 
No virus found in this outgoing message.
Checked by AVG Free Edition.
Version: 7.1.405 / Virus Database: 268.12.7/454 - Release Date: 21/9/2006
 




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



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

 



Responder a