Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在cx_Oracle和Sql*Plus上获得相同的结果?_Python_Cx Oracle - Fatal编程技术网

Python 如何在cx_Oracle和Sql*Plus上获得相同的结果?

Python 如何在cx_Oracle和Sql*Plus上获得相同的结果?,python,cx-oracle,Python,Cx Oracle,它是-对于sqlplus-命令: SQL> set serveroutput on SQL> exec where.my_package.ger_result('something'); something=1823655138 对于cx_Oracle来说: >>> c.callproc('where.my_package.ger_result', ('something',)) ['something'] 正如你所看到的,结果是不同的。 我不知道如何修理它[对

它是-对于sqlplus-命令:

SQL> set serveroutput on
SQL> exec where.my_package.ger_result('something');
something=1823655138
对于cx_Oracle来说:

>>> c.callproc('where.my_package.ger_result', ('something',))
['something']
正如你所看到的,结果是不同的。
我不知道如何修理它[

对不起,我不能复制这个

import cx_Oracle

dsn_tns = cx_Oracle.makedsn('my_ip_address_server_next_port', 0000, 'sid')
db = cx_Oracle.connect('user', 'password', dsn_tns)
curs = db.cursor()
curs.callproc("dbms_output.enable")

curs.callproc('where.my_package.ger_result', ['something',])

statusVar = curs.var(cx_Oracle.NUMBER)
lineVar = curs.var(cx_Oracle.STRING)
while True:
  curs.callproc("dbms_output.get_line", (lineVar, statusVar))
  if statusVar.getvalue() != 0:
    break
  print lineVar.getvalue()
我没有您的PL/SQL包,因此我使用了以下存储过程:

CREATE OR REPLACE PROCEDURE p_do_somet (
    p_param     IN VARCHAR2
) AS
BEGIN
    dbms_output.put_line(p_param || '=1823655138');
END;
/
我从SQL*Plus和在您的答案中使用Python脚本获得了相同的输出,
something=1823655138


如果您使用SQL*Plus和cx_Oracle得到不同的结果,那么您的存储过程可能会做一些非常有趣的事情(我不知道是什么原因导致它这样做),或者您的SQL*Plus会话和Python脚本未连接到同一数据库和/或架构。

这是您用来解决问题的Python代码,还是您提供的帮助他人解决问题的额外信息?如果是后者,请编辑您的问题以添加此信息。这是我的专业决定问题..但我还不能(24小时后)把它作为“答案”。谢谢你澄清我的问题。我问的原因是,一些没有太多使用的人倾向于在他们应该编辑问题的时候,通过添加答案为他们提出的问题添加额外的信息。我不能完全肯定你没有这样做,因为我现在还不清楚这是你的专业解决方案问题,所以我问。谢谢你的回答。我在下面回答,我们如何才能得到结果。