Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.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
Unix 如何从通过数据库链接执行的存储过程中执行假脱机?_Unix_Plsql_Database_Spool_Database Link - Fatal编程技术网

Unix 如何从通过数据库链接执行的存储过程中执行假脱机?

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

我使用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 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行提交一个循环。