有时候必须在shell中执行sql脚本,下面列举shell 中利用sqlplus 执行sql脚本的简便方式
SET pagesize 0
SET heading OFF
SET Feedback OFF
SET verify OFF
select &1 from &2;
QUIT;
sqlplus / as sysdba @sql/test.sql sysdate dual
注意:参数必须用&[1-9]表示,不然搜索传不进去,会提示让手动输入参数
如果脚本中有重复用到相同的值,如果&1=&2:
SET pagesize 0
SET heading OFF
SET Feedback OFF
SET verify OFF
delete scott.emp where empno=&1 or deptno=&2;
commit;
QUIT;
执行时,就必须传2个参数:
sqlplus "scott/tiger@test" @sql/tes2.sql 10 10
小窍门: 用procedure就可以不用传多个相同的参数,则只用传1个参数:
declare
var_no number:=&1;
begin
delete scott.emp where no=var_no or deptno=var_no;
commit;
end;