--简单存储过程的创建和使用createorreplaceprocedure test(ids account.id%type)asbeginupdate account set money = money +100where id = ids;commit;end;--查询一下select*from account where id =3;--调用一下declarebegin
test(3);end;
带有输出变量的存储过程
createorreplaceprocedure test1(ids account.id%type, moneys out number)as
i account.money%type;beginselect money+100into moneys from account where id = ids;-- moneys := i;end;--带有输出变量的存储过程测试select*from account forupdate;declare
i number(10);begin
test1(3,i);
dbms_output.put_line(i);end;
存储过程和存储函数的区别
存储函数有返回值,而存储过程没有返回值。存储函数一定要有返回值,不然和存储过程就没有区别
如果存储过程想实现有返回值的业务,我们就必须使用out类型的参数。
而是在存储过程内部给out类型参数赋值,在执行完毕后,我们直接拿到输出类型参数的值
即便是存储过程使用了out类型的参数,起本质也不是真的有了返回值,
存储函数
--存储函数必须有返回值吗???--存储函数和存储过程有什么区别???--plsql中存储函数的return可以省略吗???--存储函数的返回值必须接收--存储函数createorreplacefunction f_test(uid account.id%type)return number
is
s number(10);beginselect money+200into s from account where id = uid;
dbms_output.put_line(s);return s;end;select*from account where id =1;--测试存储函数declare
s number(10);begin
s := f_test(1);end;