我有一个包含两个变量的包,它们具有如下常量值.
person_name CONSTANT VARCHAR2 (15) := 'Adam';
person_city CONSTANT VARCHAR2 (15) := 'Houston';
Run Code Online (Sandbox Code Playgroud)
这个包变量在我的数据库中用于存储过程,其他包等.
现在我希望这些变量具有基于正在调用的客户端服务器的值.我把所有这些都保存在如下表格中
Server Parameter Value
Server1 person_name Adam
Server1 person_city Houston
Server2 person_name Victor
Server2 person_city Dallas
Run Code Online (Sandbox Code Playgroud)
因此,当从server1引用/调用package/SP时,我希望我的person_name和person_city默认为Adam和Houston.类似地,当从server2引用/调用包/ SP时,我希望我的person_name和person_city是Victor和Dallas.
如何才能做到这一点?无论如何在oracle方面,调用特定SP或使用包变量的客户端?我写了一个函数来获取如下的值.
in package,
person_name CONSTANT VARCHAR2 (15) :=GETPARAMVALUE(person_name);
person_city CONSTANT VARCHAR2 (15) :=GETPARAMVALUE(person_city);
Run Code Online (Sandbox Code Playgroud)
在函数中,我将查询表
select * from parameterstable where parameter = (function's input) and servername = ????
Run Code Online (Sandbox Code Playgroud)
我怎么知道这里的服务器名称?
任何帮助/提示将不胜感激.谢谢
假设server1并且server2是连接到服务器的客户端计算机,
SYS_CONTEXT( 'USERENV', 'HOST' )
Run Code Online (Sandbox Code Playgroud)
应该返回客户机的名称.您可以在GetParamValue函数中使用它来确定要读取的配置表中的哪一行.
| 归档时间: |
|
| 查看次数: |
660 次 |
| 最近记录: |