我需要从oracle查询中读取10列的值,并将其分配给10个unix变量。该查询将只返回一个记录(行)。
我尝试在select查询中使用分隔符(;)附加所有这些列,并将其分配给unix中的单个变量(V)。我以为我可以使用' cut'并为V。
中所有必需的10个变量赋值但问题是某些列具有特殊性质,我很难删除所需的细节。有时分隔符(;)本身存在于列值中。代码也非常冗长。
是否有更好的方法可以将多个列值从查询分配到unix变量。?
当我读到' -e'从查询中传递给它unix varaible它变成了'?e'。无论如何我们可以解决这个问题。
感谢。
答案 0 :(得分:2)
根据您想要实现的目标,有很多方法可以做到这一点。这是一个特例;作为分隔符。但是,您始终可以使用默认空格分隔符。
variable=$($ORACLE_HOME/bin/sqlplus -s / as sysdba <<EOF
set head off
set verify off
set feedback off
select sysdate || ';' || systimestamp from dual;
exit;
EOF
)
sysdate=$(echo $variable | awk -F ';' '{print $1}')
echo 'col1:'$sysdate
systimestamp=$(echo $variable | awk -F ';' '{print $2}')
echo 'col2:'$systimestamp