ORA-00907: right parenthesis not found

Asked

Viewed 2,545 times

3

Hello, I’ve been working with oracle for a little while, and I’m having this problem in the query, returns me the error: ORA-00907: right parenthesis not found, follows below the same:

("""select 
                ordem.id,ordem.data_prog,ordem.rms, ordem.pkpk, medida.ganho,ponto.descricao as ponto, unidade.id as id_unid, unidade.id_segmento as segmento,equipamento.id as id_equipamento,codigo.id, codigo.descricao
                from intranet.vb_item_ordem_servico ordem

                join intranet.vb_ponto_medida medida on medida.id = ordem.id_ponto_medida
                join intranet.vb_ponto ponto on ponto.id = medida.id_vb_ponto
                join intranet.gm_arvore arvore on arvore.id = ponto.id_arvore
                join intranet.cd_unidade unidade on unidade.id = arvore.id_unidade
                join intranet.gm_equipamento_arvore equipamento on equipamento.id = arvore.id
                join intranet.ce_tipo_equipamento codigo on codigo.id = equipamento.id_tipo_equipamento

                where (ordem.data_prog between date_sub(to_date('{}', 'DD/MM/YYYY'), INTERVAL {} MONTH) and to_date('{}', 'DD/MM/YYYY')) AND codigo.id='{}' """).format(data_prog, intervalo,data_prog, id)

Could someone tell me where I’m going wrong.

From now on I thank

  • 1

    Those 3 quotes at the beginning are correct?

  • Does this part not have an extra parenthesis at the end? and to_date('{}', 'DD/MM/YYYY'))

  • What is the content of data_prog, intervalo and id?

  • Victor, are parameters that the user informs in the script (python), data_prog, range and id are declared as string.

  • Read about injection of SQL.

2 answers

1

I don’t know Oracle, but his where has a right parentheses ')' that does not "house" with anyone, put in a terminal Qt-console (I think it works on ipython too) and navigate the line of code and the opening and closing parentheses are highlighted, I did this with your where and with that of Rapahel’s reply and found (in both) a closing parentheses "single".

where (ordem.data_prog between date_sub(to_date('{}', 'DD/MM/YYYY'), INTERVAL {} MONTH) and to_date('{}', 'DD/MM/YYYY')) AND codigo.id='{}' """).format(data_prog, intervalo,data_prog, id)

).format(data_prog, intervalo,data_prog, id)
^
Esse parenteses está "solteiro"  

0

See if it works. I think Where’s first condition parenthesis was in the wrong place.

("""select ordem.id,ordem.data_prog,ordem.rms, ordem.pkpk, medida.ganho,ponto.descricao as ponto, unidade.id as id_unid, unidade.id_segmento as segmento,equipamento.id as id_equipamento,codigo.id, codigo.descricao
            from intranet.vb_item_ordem_servico ordem
            join intranet.vb_ponto_medida medida on medida.id = ordem.id_ponto_medida
            join intranet.vb_ponto ponto on ponto.id = medida.id_vb_ponto
            join intranet.gm_arvore arvore on arvore.id = ponto.id_arvore
            join intranet.cd_unidade unidade on unidade.id = arvore.id_unidade
            join intranet.gm_equipamento_arvore equipamento on equipamento.id = arvore.id
            join intranet.ce_tipo_equipamento codigo on codigo.id = equipamento.id_tipo_equipamento
            where ordem.data_prog between date_sub(to_date('{}', 'DD/MM/YYYY'), INTERVAL {} MONTH) and to_date('{}', 'DD/MM/YYYY') 
            AND codigo.id='{}' """).format(data_prog, intervalo,data_prog, id)

Browser other questions tagged

You are not signed in. Login or sign up in order to post.