存储过程语法

创建存储过程与基础语法

create or replace procedure  hehe
as
v_total number(1);  --定义变量

begin
v_total :=1234; --初始赋值
...
IF (
v_total>1000 or v_total<2000 and v_total=10086) --判断语句
then
v_total:=123;
else 
v_total:=456;
 end if ;
...

对象定义(游标cursor )

cursor users is
select name,code from sys_users t;

循环(游标与列表)
for userinfo in users  loop

DBMS_OUTPUT.put_line('用户名为:' ||userinfo.name);

end loop;

 

或(不定义游标)

for userinfo in (select name,code from sys_users t)  loop

DBMS_OUTPUT.put_line('用户名为:' ||userinfo.name);

end loop;

或直接LOOP

LOOP
.....

 V_ROW_NUM := V_ROW_NUM + 1;  --自增变量
 EXIT WHEN V_ROW_NUM = 215;  --当这个变量值等于215时退出循环

END LOOP

执行SQL

 execute immediate ('insert into xxxx'); --或者sql语句变量

异常拦截与抛出(该begin ..end类似try{  } catch{})

begin
execute immediate ('create table xxxx(xxx) ');  --执行创表语法,可能会异常
EXCEPTION WHEN OTHERS THEN DBMS_OUTPUT.put_line(
'错误内容为:' ||tbl_name_rec.tab_name|| sqlerrm); --把异常打印出来,或者可把异常插入到异常日志表
end;

函数创建

create or replace function fangfaming(table_name varchar2,table_user varchar2,...) return varchar2
is

变量定义...

begin



return 'fsdfsd';  --返回

end;

 
原文地址:https://www.cnblogs.com/wdw31210/p/7026397.html