oracle 在SQL*PLUS中执行函数创建脚本时,SPOOL编译器退出

ttp71kqs  于 2023-08-04  发布在  Oracle
关注(0)|答案(1)|浏览(110)

我有一个问题,以获得编译器错误从preProd服务器时,执行和脚本创建一个函数。脚本使用SQL*Plus执行,但我们看不到有关编译器输出的任何详细信息。
我们使用SPOOL类似于选择,更新等查询,但现在没有关于错误的详细信息写入spool文件。我们每次都得到 * 函数创建时有编译错误 *,但我们不知道是什么错误来解决它们。
相反,在使用Oracle SQL Developer的DEV中,我们获得详细信息。
我们需要配置什么才能在输出文件中获得编译器。


的数据

lf5gs5x2

lf5gs5x21#

如果您发布了从SQL*Plus执行的脚本,可能会对我们有所帮助。
与您的类似的输出:首先,我正在创建一个过程,该过程失败,因为表不存在:

SQL> create or replace procedure p_test is
  2    l_cnt number;
  3  begin
  4    select count(*)
  5      into l_cnt
  6      from table_that_does_not_exist;
  7  end;
  8  /

Warning: Procedure created with compilation errors.

SQL> show err
Errors for PROCEDURE P_TEST:

LINE/COL ERROR
-------- -----------------------------------------------------------------
4/3      PL/SQL: SQL Statement ignored
6/10     PL/SQL: ORA-00942: table or view does not exist
SQL>

字符串
然后,我执行test.sql脚本,它创建一个函数,显示错误并终止spool。这是脚本:

set feedback on
create or replace function f_test return number is
begin
  return 1;
end;
/
show err procedure p_test
spool off


当我从SQL*Plus调用它时:

SQL> @test

Function created.

Errors for PROCEDURE P_TEST:

LINE/COL ERROR
-------- -----------------------------------------------------------------
4/3      PL/SQL: SQL Statement ignored
6/10     PL/SQL: ORA-00942: table or view does not exist
not spooling currently
SQL>


于是:

  • 函数已创建
  • 显示错误堆栈(与函数相关,但从不存在的表中选择的过程)
  • spool off失败,因为我当前没有进行假脱机
  • 如果您正在进行假脱机,那么您可能会在输出文件中看到一些内容。但是,由于您没有进行假脱机,因此没有文件(或者-可能有一个旧文件,* 两天前创建的 *),也没有您要查找的信息

正如我所说:这是 * 类似 * 你有什么。如果可能的话,发布你所做的一切(隐藏不相关或敏感的部分),这样我们就可以看到更多的信息。

相关问题