繁体   English   中英

使用cx_Oracle SQL / XML查询将Java转换为Python

[英]Convert Java to Python using cx_Oracle SQL/XML query

我有一个现有的Java解决方案,可以从Oracle数据库中提取数据。 我这样做是这样的:

String tmp = "begin ? := pkgioexportora.request(?); end;";
String xml = "<ttc.export.public.data.search><query><popid>1</popid> <moduleid>3</moduleid><only_changes>0</only_changes></query></ttc.export.public.data.search>";
CallableStatement callableStmt = oracle.prepareCall(tmp); 
// Register the type of the out param - an Oracle specific type
callableStmt.registerOutParameter(1, OracleTypes.NUMBER);
callableStmt.setString(2, xml);

此构造返回一个作业ID,稍后需要在SELECT查询的WHERE子句中使用该作业ID。

我试过只使用游标并输入完整的语句,没有CallableStatement的内容,但是没有运气。

cursor = con.cursor()
cursor.execute("begin 2 := pkgioexportora.request(xml_stuff_here); end;";)

callproc似乎给了我类似的错误。

我曾尝试寻找解决方案或完成的类似工作,但尚未提出任何示例。 是否可以使用cx_Oracle做这样的事情,或者我是否坚持执行此操作的Java代码?

您可以在cx_Oracle中使用cursor.callfunc() 如下所示:

result = cursor.callfunc("pkgioexportora.request", cx_Oracle.NUMBER, [xml_stuff])

您也可以用这种方法来做,但是它更复杂:

var = cursor.var(cx_Oracle.NUMBER) cursor.execute("begin :1 := pkgioexportora.request(:2); end;", [var, xml_stuff]) result = var.getvalue()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM