
[英]How can I read data from an Oracle SQL statement and pass it to other shell scripts?
[英]how can read environment variable with sql statement in oracle
我在我的系统上使用 Oracle 11g,我需要使用 SQL 获取系统的环境变量。
有什么办法可以得到吗? (例如USER、HOME、PATH,其实我需要获取我的自定义环境变量来进行系统管理。)
或者我在 PL/SQL 中阅读了 dbms_system.get_env()。 如何从我的 SQL 中使用它? (对不起,我更接近系统管理员。)
编辑:我想做的是如下所示:
=============================
java: query to get XXX_INFO
---------------------------
server:
=============================
|
=============================
dbms: select SOMETHING...
---------------------------
server: export XXX_INFO=myXXX
=============================
您可以使用 sys_context 函数来获取您需要的信息。 例如 - 要获取系统的 IP 地址,请将其用作
select sys_context('USERENV', 'IP_ADDRESS') from dual
输出
| SYS_CONTEXT('USERENV','IP_ADDRESS') |
|-------------------------------------|
| 10.0.0.113 |
点击此链接了解更多信息
https://docs.oracle.com/database/121/SQLRF/functions199.htm#SQLRF06117
从 SQL*Plus 将 DBMS_SYSTEM 安装为 SYSDBA。 然后创建一个函数并将它的执行授予您的用户。 通常在 SYS 中创建对象是一个坏主意,但由于 DBMS_SYSTEM 未记录,您可能希望避免将整个包授予任何人。
SQL> @?/rdbms/admin/dbmsutil.sql
Session altered.
Package created.
Synonym created.
Grant succeeded.
Session altered.
SQL> create or replace function sys.get_env(p_var in varchar2) return varchar2 is
2 v_return_value varchar2(4000);
3 begin
4 dbms_system.get_env(p_var, v_return_value);
5 return v_return_value;
6 end;
7 /
Function created.
SQL> grant execute on sys.get_env to <your user>;
Grant succeeded.
SQL>
现在来自您的用户:
SQL> select sys.get_env('ORACLE_HOME') from dual;
SYS.GET_ENV('ORACLE_HOME')
--------------------------------------------------
C:\app\oracle\product\12.1.0\dbhome_1
从 Oracle 12c 开始,您可以在 SQL 中使用这样的过程:
WITH
FUNCTION get_env(p_name IN VARCHAR2) RETURN VARCHAR2 IS
v_ret VARCHAR2(4000);
BEGIN
dbms_system.get_env(p_name, v_ret);
RETURN v_ret;
END;
SELECT get_env('HOME') FROM dual
当然,在这种情况下,您还需要访问dbms_system
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.