Python 使用Postional bind变量查询oracle数据库中的子字符串
我无法在代码中使用位置绑定 我的代码:Python 使用Postional bind变量查询oracle数据库中的子字符串,python,database,oracle,Python,Database,Oracle,我无法在代码中使用位置绑定 我的代码: value ="Some value" cur.execute("Select * from TABLENAME where FIELD like '%:1%' ",{'1':value}) 错误: cx_Oracle.DatabaseError: ORA-01036: illegal variable name/number 如果您正在尝试使用动态SQL查询,则应按如下方式执行: query := 'select * From my_table w
value ="Some value"
cur.execute("Select * from TABLENAME where FIELD like '%:1%' ",{'1':value})
错误:
cx_Oracle.DatabaseError: ORA-01036: illegal variable name/number
如果您正在尝试使用动态SQL查询,则应按如下方式执行:
query := 'select * From my_table where cola = :i';
EXECUTE IMMEDIATE query USING 'value';
value ="%Some value%"
cur.execute("select * from TABLENAME where COLUMNNAME like :1", {'1':value})
此处“:i”是绑定变量。这将被您在“使用”部分的“立即执行”命令中传递的值所替换。如果您使用的是尝试使用动态SQL查询,那么您应该这样做:
query := 'select * From my_table where cola = :i';
EXECUTE IMMEDIATE query USING 'value';
value ="%Some value%"
cur.execute("select * from TABLENAME where COLUMNNAME like :1", {'1':value})
此处“:i”是绑定变量。这将被您在USING部分的EXECUTE IMMEDIATE命令中传递的值替换。我不懂Python,因此这是未经测试的,但Oracle将您的
:1
解析为文本文字,因为它在引号中。我认为在将通配符传递给光标之前,需要先构造通配符,如下所示:
query := 'select * From my_table where cola = :i';
EXECUTE IMMEDIATE query USING 'value';
value ="%Some value%"
cur.execute("select * from TABLENAME where COLUMNNAME like :1", {'1':value})
我不懂Python,所以这是未经测试的,但Oracle将您的
:1
解析为文本文本,因为它在引号中。我认为在将通配符传递给光标之前,需要先构造通配符,如下所示:
query := 'select * From my_table where cola = :i';
EXECUTE IMMEDIATE query USING 'value';
value ="%Some value%"
cur.execute("select * from TABLENAME where COLUMNNAME like :1", {'1':value})