passa um valor variável como uma entrada para um arquivo sql oracle que está sendo chamado de um shell script

0

Queria saber se é possível "passar um valor variável como uma entrada para um arquivo sql oracle que está sendo chamado a partir de um script de shell"

Estou tentando assim, mas não está funcionando:

arquivo SQL:

set head on
set feed on
set termout off
set trimspool on

spool ts_verify.log
select tablespace_name from dba_tablespaces where tablespace_name='$ts_name';
spool off

set termout on
set trimspool off
exit

Script de shell:

ts_name=''
echo "Please enter the Tablespace Name for which you want to add datafile"
read ts_name

sqlplus -s "/ as sysdba" << EOF

@ts.sql

EXIT
EOF

Atenciosamente, Aditya

    
por user206245 27.04.2018 / 03:51

1 resposta

0

Transforme seu script SQL em um arquivo de modelo com espaços reservados realmente fáceis de combinar. Em seguida, crie o script SQL real a partir do modelo quando você conhece os valores das variáveis:

template.sql :

set head on
set feed on
set termout off
set trimspool on

spool ts_verify.log
select tablespace_name from dba_tablespaces where tablespace_name='@@TABLESPACENAME@@';
spool off

set termout on
set trimspool off
exit

Seu script:

#!/bin/sh

unset ts_name
echo "Please enter the Tablespace Name for which you want to add datafile"
read -r ts_name

# create real SQL script and pass it to 'sqlplus':
sed "s/@@TABLESPACENAME@@/$ts_name/g" template.sql |
sqlplus -s "/ as sysdba"
    
por 27.04.2018 / 10:51