SQL存储过程—02—使用
我们知道,存储过程和存储函数的主要区别是存储函数可以有一个返回值,但是,存储过程可以通过输出参数的形式得到返回值,
现在,我们分别来介绍一下两个模块为实现返回值功能的 异同点:
存储函数:
create or replace function test_func(a in int, b in int) RETURN int as declare c int default 10; d int; begin d := a+b+c; return d; end;
declare dd int; begin dd = test_func(1,1); select dd; end;
使用存储函数取值,就像我们使用c的函数、java的方法取值一样,很简单,定义一个变量dd,然后把返回值通过=赋值给dd即可;
存储过程:
create or replace procedure sysdba.test_proce(a in int, b in int,d out int) as declare c int default 10; begin d:=a+b+c; end;
/*重新定义一个语句块,在这个语句块中取存储过程输出参数d的值*/
declare aa int DEFAULT 1; dd int; begin test_proce(aa,1,dd); select dd; end;
这个存储过程取返回值就比较怪异了,我们要定义一个变量dd,并把这个变量dd作为实参传给输出参数d,最后,存储过程执行后,d的值自动输出给dd,然后select dd 取值;