使用cx_捕获来自存储过程的标准输出

2024-06-28 14:23:58 发布

您现在位置:Python中文网/ 问答频道 /正文

在cxu Oracle中,有没有一种方法可以从Oracle存储过程中捕获stdout输出?当使用Oracle的sqldeveloper或sqlplus时,会出现这些问题,但似乎没有一种方法可以使用数据库驱动程序获取它。在


Tags: 方法数据库sql过程stdout驱动程序plusoracle
3条回答

无论您使用put_line放置什么,您都可以使用^{}阅读;我相信所有这些工具都是这样工作的,可能包括非常SQL*Plus。在

请注意,您需要调用get_line足够的次数来耗尽缓冲区。否则,未读部分将被下一个put_line覆盖。在

您可以使用DBMS_OUTPUT.GET_LINE(buffer, status)检索dbms_输出。成功时状态为0,没有更多数据时为1。

您也可以使用get_lines(lines, numlines)numlines是输入输出。将其设置为最大行数,并将其设置为输出时的实际数。您可以在循环中调用此函数,并在返回的numlines小于输入值时退出。lines是一个输出数组。在

你试过这个吗?在

>>> conn = cx_Oracle.connect('user/pw@SCHEMA')
>>> cursor = conn.cursor()
>>> output = cursor.callproc("dbms_output.put_line", ['foo',])
>>> output
['foo']

第一个参数是要调用的过程,第二个参数是bindvars的一系列参数或dict。在

另请参见: http://cx-oracle.sourceforge.net/html/cursor.html

相关问题 更多 >