表)
CREATE OR REPLACE PROCEDURE[( )] IS [declare section] BEGIN [ ][EXCEPTION ];
1.无参数
create or replace procedure insertTbisbegin insert into tb values('hongda',10); commit;end call insertTb();
2.有参数
create or replace procedure insertTb2( country in varchar2 , people in number)isbegin insert into tb values(country,people); commit;end insertTb2; call insertTb2('hongda',23);
3.输出参数
create or replace procedure insertTb3( allpeople out number)as hongda varchar2(20); //声明变量,begin select sum(people) into allpeople from tb; commit;end insertTb3;
4.调用
oracle中调用有两种,call,exec
exec是sqlplus的命令,只能在sqlplus中使用。和 set serveroutput on 一起用。
call是sql命令,任何工具都可以使用。
注意:
1.参数in代表输入,out代表输出
2.存储过程参数不带取值范围
3.变量带取值范围,后面接分号
4.用select 。。。into。。。给变量赋值
5.在代码中抛异常用 raise+异常名
经常错误:
1.在oracle中,数据表别名不能加as
select * from tb as b; //错误
2.在存储过程中,select某一字段时,后面必须紧跟into,如果select整个记录,利用游标的话就另当别论了
3.在利用select...into...语法时,必须先确保数据库中有该条记录,否则会报出"no data found"异常