【发布时间】:2013-10-16 12:37:42
【问题描述】:
假设我有一个名为 myProc(variable varchar2); 的过程
那我叫它:
exec myProc(actionVariable);
有没有办法,如何在过程 myProc 中获取“actionVariable”作为字符串?所以当我以不同的方式使用程序时:
exec myProc(anotherVariable);
我将在过程 myProc 中获取“anotherVariable”作为字符串。
谢谢。我只发现我可以使用'select argument_name from user_arguments....'获取原始变量名
【问题讨论】:
-
没有。为什么知道调用者用于其变量的本地私有名称会很有用?如果它甚至有一个名字——如果传递了一个文字,你会期待什么,
exec myProc('Some string value')?如果你只有很少的调用者,我想你可以添加另一个参数并让他们将其设置为他们的局部变量名,但有什么意义呢? -
你是对的。我只需要“myProc”的简单可用性。需要通过添加一行来实现它的功能(没有声明变量等)。我需要这个名字,因为它有标准的名字结构,我可以从中快速获取重要信息。所以你说,唯一可能的方法是调用“myProc”,如“exec myProc(anotherVariable, 'anotherVariable');。我可以声明变量 nameVariable='anotherVariable';,但我需要编写更多行来代替一行实现这个功能....
-
我不确定你说的两行是什么意思;你的意思是你的过程将是两行代码,或者调用需要两行,还是别的什么?您不必为调用声明变量,只需传递一个文字字符串即可。无论如何,是的,我认为做你想要做的唯一方法是将名称作为另一个变量传递。
-
这是一个非常复杂的系统。我无法重新设计它(叹气..)。我只需要使用变量,因为它操作很多行。这个变量有标准名称,我可以使用。让我更清楚地解释它。这个变量有名字,比如说,'varIDShop',它是 varchar2 变量。它被多次使用。我需要在 myProc 中使用表 Shop 进行操作。这就是为什么我现在必须使用 myProc(varIDShop, 'Shop');。更简单的是 myProc(varIDShop)。这不是一次出现,也不是一个变量……我只是想让它更简单。
标签: sql oracle stored-procedures plsql sqlplus