问题描述
各种 Oracle 解决方案都涉及带有 dbms_output
包的 PL/sql 片段——尤其是 dbms_output.put_line()
。
这些与 sqlplus
解释器一起使用,但我们的一些代码使用 C API(oci.h
、ociapr.h
和朋友)。
解决方法
您可以使用过程 DBMS_OUTPUT.GET_LINE
从缓冲区中检索信息。我无法帮助您处理 C 代码,但以下代码是要调用的 Oracle PL/SQL 过程。
在运行调用 DBMS_OUTPUT.PUT_LINE
的 PL/SQL 片段之前,运行此过程以启用缓冲区:
dbms_output.enable;
运行 PL/SQL 代码段后,您可以像这样检索单行输出:
declare
v_line varchar2(32767);
v_status integer;
begin
dbms_output.get_line(v_line,v_status);
--Do something with the output in V_LINE here
...
end;
/
对于更大的输出,您可能需要调用 DBMS_OUTPUT.GET_LINES
,它返回一个字符串数组和行数。有关过程和参数的完整说明,请参阅包文档。