You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python脚本多占位符SQL执行报错ORA-01036问题求助

解决Oracle ORA-01036: illegal variable name/number错误

你遇到的问题是因为Oracle的Python数据库驱动(如cx_Oracle)不支持?作为参数占位符,它要求使用位置占位符(:n,n为数字序号)或命名占位符,而非其他数据库常用的?格式。

修改后的代码(位置占位符)

starting_date='01/01/2023'
ending_date='01/04/2023'

params = (starting_date, ending_date)
cur.execute('''
    SELECT analisi.codice, analisi.descrizione 
    FROM analisi 
    LEFT JOIN ris ON analisi.codice = ris.analisi 
    LEFT JOIN ric ON ris.richiesta_id = ric.richiesta_id 
    WHERE ric.richiesta_ins_data >= TO_DATE(:1, 'dd/mm/yyyy') 
      AND ric.richiesta_ins_data <= TO_DATE(:2, 'dd/mm/yyyy') 
      AND ris01 IS NOT NULL 
      AND ris01 NOT IN ('N01','N10') 
    GROUP BY analisi.codice, analisi.descrizione
''', params)

更清晰的命名占位符写法

starting_date='01/01/2023'
ending_date='01/04/2023'

params = {'start_date': starting_date, 'end_date': ending_date}
cur.execute('''
    SELECT analisi.codice, analisi.descrizione 
    FROM analisi 
    LEFT JOIN ris ON analisi.codice = ris.analisi 
    LEFT JOIN ric ON ris.richiesta_id = ric.richiesta_id 
    WHERE ric.richiesta_ins_data >= TO_DATE(:start_date, 'dd/mm/yyyy') 
      AND ric.richiesta_ins_data <= TO_DATE(:end_date, 'dd/mm/yyyy') 
      AND ris01 IS NOT NULL 
      AND ris01 NOT IN ('N01','N10') 
    GROUP BY analisi.codice, analisi.descrizione
''', params)

更优方案:直接传入datetime对象

避免手动处理日期格式,让驱动自动完成转换,减少格式错误风险:

from datetime import datetime

starting_date = datetime(2023, 1, 1)
ending_date = datetime(2023, 4, 1)

params = (starting_date, ending_date)
cur.execute('''
    SELECT analisi.codice, analisi.descrizione 
    FROM analisi 
    LEFT JOIN ris ON analisi.codice = ris.analisi 
    LEFT JOIN ric ON ris.richiesta_id = ric.richiesta_id 
    WHERE ric.richiesta_ins_data >= :1 
      AND ric.richiesta_ins_data <= :2 
      AND ris01 IS NOT NULL 
      AND ris01 NOT IN ('N01','N10') 
    GROUP BY analisi.codice, analisi.descrizione
''', params)

内容的提问来源于stack exchange,提问作者Denise Lavezzari

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 12:24:06