我需要从oracle查询中读取10列的值,并将其分配给10个unix变量。该查询将仅返回一个记录(行)。
我试图在选择查询中使用delimiter(;)附加所有这些列,并将其分配给Unix中的单个变量(V)。我以为我可以使用'cut'并将值分配给V中所有必需的10个变量。
但是,关键是某些列具有特殊性,因此我很难删除所需的详细信息。有时delimiter(;)本身出现在列值中。代码也很长。
有没有更好的方法将多个列值从查询分配给Unix变量?
另外,当我从查询中读取“ -e”并将其传递给unix变量时,它也变为“?e”。无论如何,我们可以解决这个问题。
谢谢。
有多种方法可以实现,具体取决于您要实现的目标。这是一个特殊的情况。作为分隔符。但是,您始终可以使用默认的空格分隔符。
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
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句