хранение вывода запроса pl sql в сценарии оболочки - PullRequest
0 голосов
/ 11 марта 2020

Я не получаю вывод в мой файл для запроса. пока я бегу в oracle, я могу видеть количество. Может кто-нибудь, пожалуйста, дайте мне знать, что я делаю не так?

#!/bin/bash

    ORACLE_HOME=*path*
    TNS_ADMIN=*path*

    export ORACLE_HOME
    export TNS_ADMIN

    FILE="/tmp/score_cnt.txt"

    sqlplus -S user/pass@service<< EOF

    spool $FILE
        select count(*) from score_tbl
         spool off
    exit;
    EOF

1 Ответ

0 голосов
/ 04 апреля 2020

Похоже, что передача переменной *nix в SQL*Plus все портит.

Насколько я понимаю, вы будете sh передавать имя файла в сценарии, тогда самым простым механизмом будет определение его как SPOOL файла напрямую (вместо его параметризации).

Кроме того, вы можете добавить некоторые действительно полезные SET параметры для улучшения вывода.

sqlplus -S user/pass@service << EOF
SET LINESIZE 32000
SET PAGESIZE 0
SET TRIMSPOOL ON
SET TRIMOUT ON
SET WRAP OFF
SET TERMOUT OFF

spool /tmp/score_cnt.txt
    select count(*) from score_tbl;
     spool off

EOF

PS - EOF не требует дополнительных exit в sqlplus & select оператор должен заканчиваться ;

...