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

使用python-oracledb时,Oracle SQL能否同时按名和按位绑定变量?

在python-oracledb中能否混合使用名称与位置绑定变量?

两种变量绑定方式回顾

python-oracledb支持两种变量绑定方式:

  • 按名称绑定:通过命名关键字参数传递,SQL中用:变量名指代,同一个名称的变量会被统一替换。
    示例代码:

    cursor.execute('''
        SELECT 'Var values are ' || :var || ' and ' || :var AS var_value
        FROM dual
    ''', var="something")
    

    执行后var_value的结果为:'Var values are something and something'

  • 按位置绑定:通过列表或元组传递参数,SQL中的:变量名会按顺序对应列表中的元素(即使变量名重复,也会依次取列表里的不同值)。
    示例代码:

    cursor.execute('''
        SELECT 'Var values are ' || :var || ' and ' || :var AS var_value
        FROM dual
    ''', ["one thing", "another thing"])
    

    执行后var_value的结果为:'Var values are one thing and another thing'

能否混合两种绑定方式?

不行。python-oracledb的cursor.execute()方法不支持同时传递位置参数列表(比如["another thing", "something else"])和命名关键字参数(比如name_var="one thing")。你提供的混合写法会直接触发参数错误,而且官方文档中也没有任何混合两种绑定方式的示例。

如果需要同时使用多个不同变量,要么统一用名称绑定,要么统一用位置绑定:

  • 统一名称绑定示例:
    cursor.execute('''
        SELECT 'Var values are ' || :name_var || ', ' || :pos_var || ', and ' || :pos_var AS var_value
        FROM dual
    ''', name_var="one thing", pos_var="another thing")
    
  • 统一位置绑定示例:
    cursor.execute('''
        SELECT 'Var values are ' || :var1 || ', ' || :var2 || ', and ' || :var2 AS var_value
        FROM dual
    ''', ["one thing", "another thing"])
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 05:52:47