如何从SHELL传入变量到SQL-PLSQL-Oracle频道

如题所述

[oracle@jumper oracle]$ cat a.sh sqlplus -S "/ as sysdba" << ! set heading off col today noprint column today new_val dat select to_char( sysdate, 'yyyy-mm-dd') today from dual; host echo 'today is ' &dat exit; exit; ! [oracle@jumper oracle]$ ./a.sh today is 2005-04-11 [oracle@jumper oracle]$ itpub上的Toms_zhang朋友提供了另外一种方法:
[oracle@jumper oracle]$ more a.sh #!/bin/ksh VALUE=`sqlplus -silent "/ as sysdba" < < END set pagesize 0 feedback off verify off heading off echo off select max(sequence#) from v\\\$log_history; exit; END` if [ -z "$VALUE" ]; then echo "No rows returned from database" exit 0 else echo "Max Sequence Number: $VALUE" fi [oracle@jumper oracle]$ ./a.sh Max Sequence Number: 17 历史上的今天... >> 2010-04-11文章:
关于临时段(temporary segment)的管理By eygle on 2005-04-11 23:23 | Comments (5) | FAQ | 251 |Pageviews:5 Commentskamus | April 13, 2005 10:21 AM大略看了一下,好像这种作法仍然不是传递变量到shell中吧?你的a.sh只是执行了一次sql而已,是通过host echo将dat变量(这个变量仍然是在sqlplus中而不是在shell中的)打印到屏幕。如果在a.sh中的sqlplus以外的操作系统命令还想使用dat变量呢?难道全部用host命令在sqlplus中作?eygle | April 13, 2005 11:07 AM看看第二种方法kamus | April 21, 2005 12:13 AM呵呵,第二种不错,当时怎么没看到这一段,可能是在bloglines中看的,这一段没显示出来ArseneFang | June 14, 2005 2:30 PM我有另一种类似的需求,在sqlplus中执行一段PL/SQL后,得到一个变量,然后再把这个变量的值用host传给shell,上述的两种方式就不适用了。请问有其他方式吗?
温馨提示:答案为网友推荐,仅供参考
相似回答