为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:dm8
【操作系统】:麒麟OS
【CPU】:
【问题描述】*:1.正常情况下,不引用变量:
脚本如下:
import dmPython
conn=dmPython.connect(user=‘SYSDBA’,password=‘SYSDBA’,server= ‘10.241.1.1’,port=5244)
cursor = conn.cursor()
cursor.execute(’’‘alter session set events ‘immediate trace name plndump level 140310803418016, dump_file ‘’/tmp/sqlplntest.log’’’’’’)
cursor.close()
可以执行成功。
2.我想在想把140310803418016 这个cache_item 作为变量输入,然后传参给sql 执行,但是总是执行失败
报错如下:
cursor.execute(’’‘alter session set events ‘immediate trace name plndump level (?), dump_file ‘’/tmp/sqlplntest.log’’’’’’, int(sql_id))
dmPython.DatabaseError: [CODE:-2008]��1 �и������ִ���:
TRACE�¼����ô���
脚本如下:
import dmPython
conn=dmPython.connect(user=‘SYSDBA’,password=‘SYSDBA’,server= ‘10.241.1.1’,port=5244)
sql_id = raw_input(“choose a sql_id:”)
cursor = conn.cursor()
cursor.execute(’’‘alter session set events ‘immediate trace name plndump level (?), dump_file ‘’/tmp/sqlplntest.log’’’’’’, int(sql_id))
cursor.close()
请问我应该怎么做,才能把变量作为参数传到语句里。
尝试用format试试
import dmPython
conn=dmPython.connect(user='SYSDBA',password='SYSDBA',server= '192.168.186.15',port=5236)
cursor = conn.cursor()
sess_id = input("choose a sql_id:")
xx = cursor.execute("select {} from v$sessions;".format(sess_id))
cursor.close()
直接字符串拼接就行了,没必要变量绑定