Как перенаправить выполнение сценария sql (без команды spool) в выходной файл, используя сценарий ksh - PullRequest
0 голосов
/ 08 ноября 2018

Я хочу запустить эту команду из сценария KSH, который позволяет запускать сценарий sql (без использования очереди)

sqlplus -s $CONNEXION_BDD @${FILE_SQL} >> $OUTPUT_FILE

но это не работает, она запускается безрезультатно.

1 Ответ

0 голосов
/ 09 ноября 2018

Я только что создал таблицу под названием числа и запустил некоторые данные:

create table numbers (num varchar(10));
insert into numbers values ('one');
insert into numbers values ('two');
insert into numbers values ('three');
insert into numbers values ('four');
commit;

И выбрал данные, используя sqlplus:

$ cat get_num.sql
select * from numbers;
quit;
$ sqlplus -s $CONN_STR  @get_num.sql > get_num.out
$ cat get_num.out

NUM
----------
one
two
three
four

Вот еще одна версия, которая использует здесь документ:

#!/bin/ksh
sqlplus -s $CONN_STR  <<EOF > get_num.out
select * from numbers;
quit;
EOF

Если вы хотите использовать PL / SQL:

#!/bin/ksh
sqlplus -s $CONN_STR <<EOF > tryCur.out
set serveroutput on size 30000;
DECLARE
   thisNum varchar2(10);
   CURSOR num_cur is
      SELECT num FROM numbers;
BEGIN
   OPEN num_cur;
   LOOP
   FETCH num_cur into thisNum;
      EXIT WHEN num_cur%notfound;
      dbms_output.put_line('ThisNum is:'|| thisNum);
   END LOOP;
   CLOSE num_cur;
END;
/
EOF

Эта версия создала выходной файл:

ThisNum is:one
ThisNum is:two
ThisNum is:three
ThisNum is:four

PL/SQL procedure successfully completed.
...