oracle中怎样从sql*plus向shell传递变量

如题所述

sql*plus向shell传递变量的方法是:
SYSTEM@sandbox> get host.sql
1 SET VERIFY OFF TRIMSPOOL ON TERMOUT OFF HEADING OFF LINESIZE 4000 PAGES 0 FEEDBACK OFF timing off
2 spool s:\.tmp\host.ps1
3 select '$env:MY_VAR="'||dummy||'"' from dual;
4 spool off
5* exit
16:30:25 SYSTEM@sandbox> @host.sql
Disconnected from Oracle Database 11g Express Edition Release 11.2.0.2.0 - Production
PS S:\.tmp> cat host.ps1
$env:MY_VAR="X"
PS S:\.tmp> .\host.ps1
PS S:\.tmp> $env:my_var
X
PS S:\.tmp>

注意:此处一定要在最开始加set heading off 这句话。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-07-14
给你一段代码这是我以前写的,稍微改一改就可以用了。
#!/bin/bash
SQLSET="set echo off\nset head off\nset pagesize 0\nset linesize 2000\nset heading off\nset trimspool on\nset feedback off\nset term off\n"
num=`echo -e $SQLSET"select count(1)-1 from shuzu;"|sqlplus -s 用户名/密码 @ XXXX`
其他的部分自己写就好了。
@前后的空格没有办法,因为不加空格,就是超级联接,答案容易被屏蔽。本回答被提问者和网友采纳
相似回答