如何使用ksh脚本将sql脚本的执行(不带spool命令)重定向到输出文件

时间:2018-11-08 14:27:45

标签: oracle sqlplus ksh

我想从KSH脚本运行此命令,该脚本允许运行sql脚本(不使用假脱机)

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

但是它不起作用,她开始时没有任何结果。

1 个答案:

答案 0 :(得分:0)

我刚刚创建了一个称为数字的表,并运行了一些数据:

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

这是另一个使用here-doc的版本:

#!/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.