Unix 如何从通过数据库链接执行的存储过程中执行假脱机?
我使用UNIX脚本运行sql代码,该代码通过数据库链接启动存储过程。我可以成功地完成该过程,但是没有一个DBMS输出被假脱机到指定的假脱机文件 UNIX中的SQL:Unix 如何从通过数据库链接执行的存储过程中执行假脱机?,unix,plsql,database,spool,database-link,Unix,Plsql,Database,Spool,Database Link,我使用UNIX脚本运行sql代码,该代码通过数据库链接启动存储过程。我可以成功地完成该过程,但是没有一个DBMS输出被假脱机到指定的假脱机文件 UNIX中的SQL: set feedback off; set linesize 500; set serveroutput on size 1000000; set serveroutput on format wrapped; spool $SQLspool; whenever oserror exit; whenever sqlerror ex
set feedback off;
set linesize 500;
set serveroutput on size 1000000;
set serveroutput on format wrapped;
spool $SQLspool;
whenever oserror exit;
whenever sqlerror exit sql.sqlcode;
DECLARE
retcode integer :=0;
BEGIN
owner.procedure@db;
dbms_output.put_line('');
dbms_output.put_line('return code: ' || retcode);
dbms_output.put_line('');
EXCEPTION
WHEN OTHERS THEN
RAISE;
END;
/
EXIT;
后台打印文件内容:
return code: 0
我在存储过程中列出了一组DMB输出,但没有写入spool文件 如何将其输出到spool文件
我尝试使用IN-OUT变量,但由于该过程包含提交错误和参数,因为它正在通过DB链接…PUT和PUT\u行的输出被缓冲。从 : 在PL/SQL程序完成之前,SQL*Plus不会显示DBMS_输出消息。PL/SQL程序中没有刷新DBMS_输出缓冲区的机制
因此,如果您正在寻找流响应,您将需要编写一个不缓冲输出的小程序 您看到所有者的输出了吗。procedure@db在SQL*PLUS中,它不会写入spool文件。或者只是没有显示输出?您是否检查了过程中没有“dbms_output.disable”调用?@Shannon separance:所以我得到的唯一dbms输出来自unix脚本,该脚本的“返回代码:0”没有任何输出被存储到存储过程指示的spool文件中。@A.B.Cade:程序中没有这样的调用。存储过程是一个简单的delete语句,每10k行提交一个循环。