Thomas Zhang的杂货铺
19 02, 2008
如何通过SQL*Plus在命令行传入参数调用过程
作者 tomszrp 20:22 | Permalink 静态链接网址 | Comments 最新回复 (0) | Trackback 引用 (0) | 磨刀石

在实际的业务系统维护的过程中或日常管理过程中,我们经常需要在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了。

Comments
发表评论
标题:


称呼:


邮箱地址(可选):


个人主页(可选):


发表评论:
Bold Italic Link authimage




博客日历
« 七月 2008 »
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      
搜索
最新发表
文章分类
文章归档
网站链接
新闻聚合