天天看點

存儲過程文法

建立存儲過程與基礎文法

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;