PL/SQL中获取操作系统环境变量:
 
variable var1 varchar2(10);
exec dbms_system.get_env('OS_ENV',:var1);
PL/SQL procedure successfully completed
var1
---------
E:\BQ-JServer_7.1.3\j2sdk1.4.2
请教大家:
在我将系统的该环境变量值修改或者删除该环境变量。
dbms_system.get_env方法无法获得更新的环境变量值,依就打出上次的变量值。
有的时候重启数据库也不行。感觉需要重启WINDOW机器才能生效。

解决方案 »

  1.   

    因为有个需求。就是在PLSQL中需要动态获取一个变量VAR1。
    而该变量VAR1希望能从外部文件获得的。
    我也没想到其他好方法,就通过批处理将VAR1变量写到WINDOW系统环境变量中。
    这样可以随时修改该VAR1的值,而PLSQL中通过dbms_system.get_env获得VAR1最新的值。wmic ENVIRONMENT create name="GPTDEX_ORA_SID",username="<system>",VariableValue="%GPTDEX_ORA_SID%"
      

  2.   

    直接用ufl_file包去读文件。
      

  3.   


    但ufl_file读取文件的路径,需要动态的。
    如果获得一个外部文件输入的路径?
      

  4.   

    你环境变量值不也是动态传进去的吗,这两个参数是平等的吧最多是动态建立Directory
      

  5.   

    可以用UFL_FILE包来直接读取文件。具体操作如下:
    1. 以管理员身份登录,设置可操作目录create or replace directory BLOBDIR as 'D:\MyFolder';
    grant read,write on directory BLOBDIR to sharedb;
    GRANT EXECUTE ON utl_file TO sharedb;
    select * from ALL_DIRECTORIES;
    2. 建立存储过程你的代码