免费注册 查看新帖 |

ChinaUnix.net

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1765 | 回复: 0

请问怎样将环境变量传递给windows的CMD? [复制链接]

论坛徽章:
0
发表于 2011-03-21 20:41 |显示全部楼层
我在windows环境下,用perl执行oracle的sqlplus命令,能够执行:
system "
        sqlplus \"system/oracle\@PROD\"  \<\<EOF
        select count(*) from dba_users;
EOF
";

然后,我想用sqlplus命令,执行一个SQL文件,这个SQL文件会将输出spool到这个目录:spool ${MY_SPOOL_LOG}

结果,我这样执行之后,SQL文件目录下多了一个${MY_SPOOL+LOG}文件,而不是我期望的那样,生成我指定的文件名:
my $file = "general_sql/0010_version.sql";
$ENV{MY_SPOOL_LOG} = "oracle_sql_spool/0010_version.log";
### %ENV

system "sqlplus \"system/oracle\@PROD\" \@$file";

0010_version.sql的内容是这样的:
spool ${MY_SPOOL_LOG}
column PRODUCT format a45
column VERSION format a15
column STATUS format a18
SELECT PRODUCT,version,status  FROM product_component_version;
spool off
exit;


看起来,是$ENV{MY_SPOOL_LOG} = "oracle_sql_spool/0010_version.log"; 这条语句,并没有把环境变量传递给system命令。
我用### %ENV,是能够看到$ENV{MY_SPOOL_LOG}变量的内容的:
###         MY_SPOOL_LOG => 'oracle_sql_spool/0010_version.log',


能够有办法将$ENV{MY_SPOOL_LOG}传递给system执行吗?

谢谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

基于案例的 SQL 优化实战训练营

讲师:中电福富特级专家梁敬彬,参与本次课程培训,你将收获:
1. 能编写出较为高效的 SQL;
2. 能解决70%以上的数据库常见优化问题;
3. 能得到老师提供的高效的相关工具和解决方案;
4. 能举一反三,收获不仅仅是 SQL 优化。
现在购票享受8.8折优惠!
----------------------------------------
优惠时间:2019年3月20日前

大会官网>>
  

北京盛拓优讯信息技术有限公司. 版权所有 16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122
中国互联网协会会员  联系我们:huangweiwei@it168.com
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP