我想用一段sql scripts, 从DB 读出某个值,
返回到其调用程序。
DECLARE
supp_count NUMBER DEFAULT 0;
max_batchno NUMBER DEFAULT 0;
batch_cnt NUMBER DEFAULT 0;BEGIN
select count(1) into supp_count from eaggweb.AGG_STAGE1_ACCEPTED_SUPPLIER;
IF (supp_count!=0)
THEN
select max(batch_no) into batch_cnt from eaggweb.AGG_STAGE1_ACCEPTED_SUPPLIER;
max_batchno:= batch_cnt;
ELSE
max_batchno:=0;
END IF;
/////在此处返回_batchno,供父亲方法使用。
END;
/
exit
但是我不知道应该怎么返回。谢谢:)
返回到其调用程序。
DECLARE
supp_count NUMBER DEFAULT 0;
max_batchno NUMBER DEFAULT 0;
batch_cnt NUMBER DEFAULT 0;BEGIN
select count(1) into supp_count from eaggweb.AGG_STAGE1_ACCEPTED_SUPPLIER;
IF (supp_count!=0)
THEN
select max(batch_no) into batch_cnt from eaggweb.AGG_STAGE1_ACCEPTED_SUPPLIER;
max_batchno:= batch_cnt;
ELSE
max_batchno:=0;
END IF;
/////在此处返回_batchno,供父亲方法使用。
END;
/
exit
但是我不知道应该怎么返回。谢谢:)
return batch_cnt ;
谢谢两位:)俺属于入门级别的,对这个还不是很熟悉。在确认一下,是不是这种简单的script就无法返回任何直阿
写成procedure或者function就可以返回,也可以调用。
可以在shell scripts 中调用, 使用sqlplus....另外,我想知道大家所说的那个function 是存在于哪里?一个专门的file ?怎么命名?
我是想在shell script 中用的,该怎么调用呢?
我见过oracle的存储过程的写法,在shell 中使用有什么区别么?多谢
aa.sql
set term off
column batch_cnt noprint new_value total
select max(batch_no) batch_cnt from tablename;
set term on
prompt &total
exitcall aa.sql的方法就是在shell scripts 用 sqlplus username/pws@DBname @aa.sql2,问题是当tablename里没有任何纪录的时候,total返回的根本就是空的,
在shell中无法使用,我的想法时,让total 在tablename里没有任何纪录的时候,返回0,
在aa.sql 中 :select nvl(max(batch_no),0) batch_cnt from tablename;
这样就不会返回空值了。
另外再script中也可以进行判断返回值是否为空,如果是,就赋值为0即可
不过还是function比较方便,但是原来的程序是别人写的,需要改得太多了:(