2024-06-28 14:23:58 发布
网友
在cxu Oracle中,有没有一种方法可以从Oracle存储过程中捕获stdout输出?当使用Oracle的sqldeveloper或sqlplus时,会出现这些问题,但似乎没有一种方法可以使用数据库驱动程序获取它。在
无论您使用put_line放置什么,您都可以使用^{}阅读;我相信所有这些工具都是这样工作的,可能包括非常SQL*Plus。在
put_line
请注意,您需要调用get_line足够的次数来耗尽缓冲区。否则,未读部分将被下一个put_line覆盖。在
get_line
您可以使用DBMS_OUTPUT.GET_LINE(buffer, status)检索dbms_输出。成功时状态为0,没有更多数据时为1。
DBMS_OUTPUT.GET_LINE(buffer, status)
您也可以使用get_lines(lines, numlines)。numlines是输入输出。将其设置为最大行数,并将其设置为输出时的实际数。您可以在循环中调用此函数,并在返回的numlines小于输入值时退出。lines是一个输出数组。在
get_lines(lines, 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
无论您使用} 阅读;我相信所有这些工具都是这样工作的,可能包括非常SQL*Plus。在
put_line
放置什么,您都可以使用^{请注意,您需要调用
get_line
足够的次数来耗尽缓冲区。否则,未读部分将被下一个put_line
覆盖。在您可以使用
DBMS_OUTPUT.GET_LINE(buffer, status)
检索dbms_输出。成功时状态为0,没有更多数据时为1。您也可以使用
get_lines(lines, numlines)
。numlines
是输入输出。将其设置为最大行数,并将其设置为输出时的实际数。您可以在循环中调用此函数,并在返回的numlines
小于输入值时退出。lines
是一个输出数组。在你试过这个吗?在
第一个参数是要调用的过程,第二个参数是bindvars的一系列参数或dict。在
另请参见: http://cx-oracle.sourceforge.net/html/cursor.html
相关问题 更多 >
编程相关推荐