Python cx\u oracle使用关键字参数返回输入参数

Python cx\u oracle使用关键字参数返回输入参数,python,python-3.x,oracle,cx-oracle,Python,Python 3.x,Oracle,Cx Oracle,我正在使用cx_oracle对我们的数据库进行db proc调用。我们必须严格避免位置参数,并且仅在db调用中使用命名参数。文件中提到的问题是- 关键字参数将包含在位置参数之后 和不作为输出序列的一部分返回 很明显,我并没有在我的呼叫中得到db输入参数。这些输入参数应该被更新,我需要在对其他db PROC的进一步调用中更新这些值 使用位置参数调用1- output = connection.cursor() result = cursor.callproc("get_some_dat

我正在使用cx_oracle对我们的数据库进行db proc调用。我们必须严格避免位置参数,并且仅在db调用中使用命名参数。文件中提到的问题是-

关键字参数将包含在位置参数之后 和不作为输出序列的一部分返回

很明显,我并没有在我的呼叫中得到db输入参数。这些输入参数应该被更新,我需要在对其他db PROC的进一步调用中更新这些值

使用位置参数调用1-

output = connection.cursor() 
result = cursor.callproc("get_some_data", ["name", cx_Oracle.Binary(), output ])
返回包含更新的输入/输出参数值的列表

呼叫2

output = connection.cursor() 
result = cursor.callproc("get_some_data", keywordParameters = {"input_1":"name", "input_2": cx_Oracle.Binary(), "output":output })
返回空列表,可通过
output
变量使用光标输出


有解决方法吗?

您可以访问IN-OUT和OUT变量,并且知道传入参数的内容。所以你可以做任何你想做的事

“”“
创建或替换过程获取一些数据(在varchar2中输入\u 1,在varchar2中输入\u 2,输出sys\u refcursor)
开始
输入|2:=输入|1 |“”| |输入|2;
打开输出,从双通道选择*;
结束;
/
显示错误
"""
导入cx_Oracle
导入操作系统
导入系统
如果sys.platform.startswith(“达尔文”):
cx_Oracle.init_Oracle_客户端(lib_dir=os.environ.get(“HOME”)+“/Downloads/instantclient_19_8”)
username=os.environ.get(“PYTHON\u用户名”,“cj”)
password=os.environ.get(“PYTHON\u password”、“cj”)
connect\u string=os.environ.get(“PYTHON\u CONNECTSTRING”、“localhost/orclpdb1”)
connection=cx\u Oracle.connect(用户名、密码、connect\u字符串)
使用connection.cursor()作为游标:
输出=连接。游标()
v=cursor.var(str)
v、 设置值(0,'Smith')
result=cursor.callproc(“获取一些数据”,关键字参数={“input\u 1”:“Fred”,“input\u 2”:v,“output”:output})
打印(v.getvalue())
对于输出中的行:
打印(行)
给出:

Fred Smith
('X',)

您可以访问IN-OUT和OUT变量,并且知道传入的参数是什么。所以你可以做任何你想做的事

“”“
创建或替换过程获取一些数据(在varchar2中输入\u 1,在varchar2中输入\u 2,输出sys\u refcursor)
开始
输入|2:=输入|1 |“”| |输入|2;
打开输出,从双通道选择*;
结束;
/
显示错误
"""
导入cx_Oracle
导入操作系统
导入系统
如果sys.platform.startswith(“达尔文”):
cx_Oracle.init_Oracle_客户端(lib_dir=os.environ.get(“HOME”)+“/Downloads/instantclient_19_8”)
username=os.environ.get(“PYTHON\u用户名”,“cj”)
password=os.environ.get(“PYTHON\u password”、“cj”)
connect\u string=os.environ.get(“PYTHON\u CONNECTSTRING”、“localhost/orclpdb1”)
connection=cx\u Oracle.connect(用户名、密码、connect\u字符串)
使用connection.cursor()作为游标:
输出=连接。游标()
v=cursor.var(str)
v、 设置值(0,'Smith')
result=cursor.callproc(“获取一些数据”,关键字参数={“input\u 1”:“Fred”,“input\u 2”:v,“output”:output})
打印(v.getvalue())
对于输出中的行:
打印(行)
给出:

Fred Smith
('X',)

@克里斯托弗·琼斯,我会的,但这是一个需要时间的过程。我想知道是否有人有一个我错过的快速解决方法。cx_Oracle for keywordParameters没有很好的文档记录。@ChristopherJones,我会的,但这是一个耗时的过程。我想知道是否有人有一个我错过的快速解决方法。cx_Oracle for keywordParameters没有很好的文档记录。啊,我看的是完全不同的方向,忽略了这个简单的选项。非常感谢。啊,我看的方向完全不同,忽略了这个简单的选择。谢谢。