【发布时间】:2019-04-12 01:57:45
【问题描述】:
我想从 KSH 脚本运行这个命令,它允许运行 sql 脚本(不使用假脱机)
sqlplus -s $CONNEXION_BDD @${FILE_SQL} >> $OUTPUT_FILE
但它不起作用,她开始没有任何结果。
【问题讨论】:
我想从 KSH 脚本运行这个命令,它允许运行 sql 脚本(不使用假脱机)
sqlplus -s $CONNEXION_BDD @${FILE_SQL} >> $OUTPUT_FILE
但它不起作用,她开始没有任何结果。
【问题讨论】:
我刚刚创建了一个名为 numbers 的表并运行了一些数据:
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.
【讨论】:
set serveroutput on size 30000;,是吗?如果您不包含它,您将看不到来自dbms_output.put_line、spool 的任何内容。