|
在实际的业务系统维护的过程中或日常管理过程中,我们经常需要在command下调用脚本来完成一些工作,其中有的时候又需要在command中去传递一些变量到procedure中,那么如何实现呢? 一般常见的做法是大家写一个简单的shell脚本或bat脚本,再调用sqlplus 直接通过&var_name即可传入实现。 今天我再介绍另外一个实现的思路,我想很多人一定都写过: 先建立一个表和过程 create table test(no_in int,no_out int);
create or replace procedure proc_test (p_1 in number) is
begin
insert into test values(p_1,p_1*2);
commit;
end;
/ 过程proc_test代表我要完成的工作。 然后写一个调用该过程来完成工作的SQL set echo off feedback off verify off pagesize 100
variable x number
begin
:x := &1;
end;
/
execute proc_test(:x)
select * from test;
exit
最后我们在command 下执行该脚本: C:>sqlplus -s study/study @test.sql 100
NO_IN NO_OUT
---------- ----------
100 200
C:>
当然,我们也可以在sqlplus中调用这个test.sql,比如(记得去掉前面test.sql中最后的exit,否则一执行完就关闭窗口了)
SQL> start c:test.sql 200
NO_IN NO_OUT
---------- ----------
100 200
200 400
SQL>
是不是很好用?不要小看他,或许将来某一个你就需要类似的写法去完成一个task了。
|