Atribuindo a saída de uma consulta SQL à variável

9

Estou conectando-me ao banco de dados Oracle e disparando uma consulta e atribuindo a saída à variável Mas quando faço eco do valor da variável, não é impresso corretamente.

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

A consulta retorna o resultado correto quando disparada no banco de dados. Mas a variável "count" tem valor incorreto.

    
por suni 01.08.2013 / 14:50

2 respostas

11

A palavra terminada aqui-doc deve ser os únicos caracteres na linha: não é permitido recuar. Além disso, use $() em vez de backticks - eles são aninhados.

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

link

    
por 01.08.2013 / 15:51
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}"
    
por 26.05.2015 / 08:09