在 Oracle PL/SQL 中获取调用过程或函数的名称

2023-11-02数据库问题
1

本文介绍了在 Oracle PL/SQL 中获取调用过程或函数的名称的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

问题描述

有谁知道 PL/SQL 过程(在本例中为错误记录过程)是否有可能获得调用它的函数/过程的名称?

Does anyone know whether it's possible for a PL/SQL procedure (an error-logging one in this case) to get the name of the function/procedure which called it?

显然我可以将名称作为参数传入,但是进行系统调用或其他方式来获取信息会很好-如果不是从过程/函数中调用,它可以只返回 null 或其他内容.

Obviously I could pass the name in as a parameter, but it'd be nice to make a system call or something to get the info - it could just return null or something if it wasn't called from a procedure/function.

如果没有这方面的方法,那很好 - 只是好奇是否有可能(搜索一无所获).

If there's no method for this that's fine - just curious if it's possible (searches yield nothing).

推荐答案

有一个名为 OWA_UTIL 的包(在旧版本的数据库中默认不安装).这有一个方法 WHO_CALLED_ME() 返回 OWNER、OBJECT_NAME、LINE_NO 和 CALLER_TYPE.请注意,如果调用者是一个打包过程,它将返回 PACKAGE 名称而不是过程名称.在这种情况下,无法获得过程名称;这是因为过程名可以重载,所以不一定很有用.

There is a package called OWA_UTIL (which is not installed by default in older versions of the database). This has a method WHO_CALLED_ME() which returns the OWNER, OBJECT_NAME, LINE_NO and CALLER_TYPE. Note that if the caller is a packaged procedure it will return the PACKAGE name not the procedure name. In this case there is no way of getting the procedure name; this is because the procedure name can be overloaded, so it's not necessarily very useful.

了解更多信息.

从 10gR2 开始,还有 $$PLSQL_UNIT 特殊功能;这也将返回 OBJECT NAME(即包不是打包过程).

Since 10gR2 there is also the $$PLSQL_UNIT special function; this will also return the OBJECT NAME (i.e. package not packaged procedure).

这篇关于在 Oracle PL/SQL 中获取调用过程或函数的名称的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

The End

相关推荐

为什么 Mysql 的 Group By 和 Oracle 的 Group by 行为不同
Why Mysql#39;s Group By and Oracle#39;s Group by behaviours are different(为什么 Mysql 的 Group By 和 Oracle 的 Group by 行为不同)...
2024-04-16 数据库问题
13

带聚合函数的 SQL GROUP BY CASE 语句
SQL GROUP BY CASE statement with aggregate function(带聚合函数的 SQL GROUP BY CASE 语句)...
2024-04-16 数据库问题
23

创建分层定义的数据集的扁平表/视图
Creating a flattened table/view of a hierarchically-defined set of data(创建分层定义的数据集的扁平表/视图)...
2024-04-16 数据库问题
4

MySQL:如何做到行级安全(如 Oracle 的 Virtual Private Database)?
MySQL: how to do row-level security (like Oracle#39;s Virtual Private Database)?(MySQL:如何做到行级安全(如 Oracle 的 Virtual Private Database)?)...
2024-04-16 数据库问题
6

强制执行具有完整性约束的“子集"关系的最佳方法是什么
What is the best way to enforce a #39;subset#39; relationship with integrity constraints(强制执行具有完整性约束的“子集关系的最佳方法是什么)...
2024-04-16 数据库问题
7

使用 oracle SQL 按分隔符位置拆分字符串
Split String by delimiter position using oracle SQL(使用 oracle SQL 按分隔符位置拆分字符串)...
2024-04-16 数据库问题
46