在oracle查询中将多个列的值分配给Unix中的多个变量

时间:2016-01-12 16:50:18

标签: oracle shell unix

我需要从oracle查询中读取10列的值,并将其分配给10个unix变量。该查询将只返回一个记录(行)。

我尝试在select查询中使用分隔符(;)附加所有这些列,并将其分配给unix中的单个变量(V)。我以为我可以使用' cut'并为V。

中所有必需的10个变量赋值

但问题是某些列具有特殊性质,我很难删除所需的细节。有时分隔符(;)本身存在于列值中。代码也非常冗长。

是否有更好的方法可以将多个列值从查询分配到unix变量。?

当我读到' -e'从查询中传递给它unix varaible它变成了'?e'。无论如何我们可以解决这个问题。

感谢。

1 个答案:

答案 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