我写了一个unix脚本PLSQL查询,我分别为每个查询建立连接,并将查询结果存储在变量中。我想通过只建立一次连接并将每个查询的结果存储在不同的变量中来提高代码效率。下面是我的工作代码
var1=`sqlplus -s $user/$password <<EOF @$query1 $value exit EOF`
var2=`sqlplus -s $user/$password <<EOF @$query2 $value exit EOF`
var3=`sqlplus -s $user/$password <<EOF @$query3 $value exit EOF`
我期待的解决方案是
sqlplus EOF
var1=query1
var2=query2
var3=query3
EOF
请帮助我正确的语法
1条答案
按热度按时间bbuxkriu1#
当然,你可以在每个连接中获取多个变量,但不是通过简单的反引号stdout重定向。你需要以某种方式标记值,以便以后可以将它们分开。有很多方法可以做到这一点。
一种方法是将它们假脱机到不同的文件中。只需在每个sql文件的顶部添加“
spool a
”,“spool b
”,“spool c
”或任何您想要命名的名称。运行脚本,然后返回shell,将三个“a.lst
”“b.lst
”“c.lst
”文件读入三个变量。另一种方法是在每个SQL文件中添加一个标识查询的哑列:
你可以spool它或者捕获stdout:
另一种方法是在PL/SQL块中运行查询,并将输出(带有标记)分配给可以打印的SQL*Plus绑定变量:
这只是几种方法,我相信其他人可以想出更多的方法。