将SQL查询的输出分配给变量


10

我正在连接到oracle数据库并触发查询并将输出分配给变量,但是当我回显该变量的值时,它将无法正确打印。

count=`sqlplus -s $configuser/$configpass@$ORACLE_SID <<END
           set pagesize 0 feedback off verify off heading off echo off;
           select max(cust_id) from cutomers
           exit;
           END`
           echo $count

在数据库上触发查询返回正确的结果。但是“ count”变量的值不正确。


1
在修复格式后,请检查缩进是否与您的原始代码匹配。(如果匹配,那就错了。您不能像这样缩进此处文档的结束定界符。)
manatwork 2013年

正常模式下显示什么,分配时计数值是多少?
ott--

Answers:


13

此文档末尾的单词必须是该行上唯一的字符:不允许缩进。另外,请使用$()而不是反引号-它们是可嵌套的。

count=$(sqlplus -s $configuser/$configpass@$ORACLE_SID <<END
       set pagesize 0 feedback off verify off heading off echo off;
       select max(cust_id) from cutomers
       exit;
END
)
echo $count

http://www.gnu.org/software/bash/manual/bashref.html#Here-Documents


2
您也可以将制表符与<<-END符号一起使用。不是空格,TABS!
slm

1
OUTPUT=$( ${OracleClientHome}/sqlplus -S user/pass@database <<EOF
set pagesize 0 linesize 32767 feedback off verify off heading off echo off
select a1.id  || '|' ||
       a1.stmt_begin_date  || '|' ||
       a1.stmt_end_date  || '|' ||
       a1.status  || '|' ||
       a1.total_recs 
from acct_stmt_file a1
 where a1.actp_cd = 'HSA'
   and a1.stmt_begin_date =trunc(sysdate);
exit;
EOF
)

echo -e "\n${OUTPUT}"

1
为什么?我认为如果您也与社区分享您的想法会更好,不仅是此脚本片段。
彼得-恢复莫妮卡2015年

-1
count=`sqlplus -s $configuser/$configpass@$ORACLE_SID <<END
           set pagesize 0 feedback off verify off heading off echo off
           select max(cust_id) from cutomers;
           exit;
           END`

           echo $count

您必须在正确的位置使用分号。


另外,END末尾的a需要向左齐平,前面没有空格。
库萨兰达
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.