Página 1 de 1

Update com subselect, com erro ORA-00936

Enviado: Qua, 15 Ago 2012 10:32 am
por Marcio Souza
Olá pessoal, boa noite a todos!

Estou tentando realizar o update abaixo, mas não roda e exibi o erro ORA-00936, porém se eu rodar somente o select não dá erro, estou enviando a query abaixo. Agradeço pela ajuda.


UPDATE se2010
SET e2_datalib = '20120814',
e2_usualib = 'Administrador',
e2_baixa = '20120814',
e2_saldo = '0',
e2_valliq = e2_valor,
e2_hist = 'MSG.'
WHERE (SELECT * FROM se2010, sed010
WHERE e2_saldo > 0
AND se2010.e2_filial = '01'
AND se2010.d_e_l_e_t_ = ' '
AND e2_exig <> 'N'
AND e2_naturez <> '2603'
AND e2_tipo NOT IN ('NDF', 'ADV')
AND sed010.d_e_l_e_t_ = ' '
AND sed010.ed_filial = '01'
AND e2_tipo <> 'PA'
AND e2_vencto <= '20111227'
AND e2_naturez = ed_codigo)

Muito obrigado,

Márcio Souza

Re: Update com subselect, com erro ORA-00936

Enviado: Qua, 15 Ago 2012 11:55 am
por Trevisolli
Brother,

Não tenho como rodar aqui...
Veja se tem o mesmo efeito:

Selecionar tudo

UPDATE se2010
   SET e2_datalib = '20120814',
       e2_usualib = 'Administrador',
       e2_baixa   = '20120814',
       e2_saldo   = '0',
       e2_valliq  = e2_valor,
       e2_hist    = 'MSG.'
 WHERE
     AND e2_saldo > 0 
     AND e2_exig <> 'N'
     AND e2_naturez <> '2603'
     AND e2_tipo NOT IN ('NDF', 'ADV')
     AND e2_tipo <> 'PA'
     AND e2_vencto <= '20111227' 
     AND EXISTS (SELECT 1
                   FROM sed010 e1
                  WHERE e1.e2_filial = '01'
                    AND se2010.e2_naturez = e1.ed_codigo
                    AND e1.d_e_l_e_t_ = ' '
                    AND e1.d_e_l_e_t_ = ' '
                    AND e1.ed_filial = '01') 

Re: Update com subselect, com erro ORA-00936

Enviado: Qua, 15 Ago 2012 1:46 pm
por Marcio Souza
Fala Trevisolli,

Apresentou o mesmo problema, sinistro...

Obrigado hein!

Re: Update com subselect, com erro ORA-00936

Enviado: Qua, 15 Ago 2012 2:58 pm
por Trevisolli
Desculpae,
Na hora de colar, colei de uma aba errada (tinha um AND a mais):

Selecionar tudo

UPDATE se2010
   SET e2_datalib = '20120814',
       e2_usualib = 'Administrador',
       e2_baixa   = '20120814',
       e2_saldo   = '0',
       e2_valliq  = e2_valor,
       e2_hist    = 'MSG.'
WHERE e2_saldo > 0 
     AND e2_exig <> 'N'
     AND e2_naturez <> '2603'
     AND e2_tipo NOT IN ('NDF', 'ADV')
     AND e2_tipo <> 'PA'
     AND e2_vencto <= '20111227' 
     AND EXISTS (SELECT 1
                   FROM sed010 e1
                  WHERE e1.e2_filial = '01'
                    AND se2010.e2_naturez = e1.ed_codigo
                    AND e1.d_e_l_e_t_ = ' '
                    AND e1.d_e_l_e_t_ = ' '
                    AND e1.ed_filial = '01')