如何记录Oracle函数的使用情况[重复]

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

此问题在此处已有答案

Mark PLSQL procedure/function as deprecated(4个答案)
28天前关闭。
在我的Oracle数据库中,我有一个过时的函数MYFCT。它的一个新版本已经被写为MYFCT_NEW,它为相同的输入参数返回不同的输出。我们相应地重写了代码库,但我想知道是否仍然有一些未记录的用法。
是否可以记录函数的使用情况?类似于触发器CREATE TRIGGER BEFORE EXECUTE ...,用于记录所有调用MYFCT的会话。
目前,我只想删除执行该函数的授权,看看是否会弹出错误,但这似乎有点苛刻。

aiqt4smr

aiqt4smr1#

您可以在旧函数中包含一个日志记录过程。大概是这样的:

SQL> create table fun_log (who varchar2(30), when date);

Table created.

SQL> create or replace procedure p_log is
  2    pragma autonomous_transaction;
  3  begin
  4    insert into fun_log(who, when) values (user, sysdate);
  5    commit;
  6  end;
  7  /

Procedure created.

字符串
这是你的“旧”功能;包括行#3(即,调用p_log过程):

SQL> create or replace function f_test return number is
  2  begin
  3    p_log;
  4    return 1;
  5  end;
  6  /

Function created.


然后检查fun_log表中是否有行:

SQL> select f_test from dual;

    F_TEST
----------
         1

SQL> select * from fun_log;

WHO                            WHEN
------------------------------ -------------------
SCOTT                          06.07.2023 10:03:12

SQL>


如果需要,可以在fun_log上创建一个触发器,每当插入新行时,它都会向您发送一封电子邮件(这样您就不必手动检查它)。

相关问题