java SSM第三章學習內容(oracle儲存過程)
儲存過程
edit進入文字編輯器中
/指定語句
DBMS_OUTPUT.PUT_LINE('操作完畢'||a);輸出一段話
commit;提交
set serverout on 列印一段話之前要先設定
基本型別
declare
//設定變數,直接賦值可以:=9,不賦值a number(5);
a number(5):=9;
begin
//查詢老師為:王斌的工資(wage)並賦值給a
select wage into a from teachers where name='王彤';
if(a<5000)
then
update teachers set wage=wage+300 where name='王彤';
else
update teachers set wage=wage-300 where name='王彤';
end if;
//提交
commit;
//下面如果想成功後輸出語句,就要在命令列設定 set serverout on
DBMS_OUTPUT.PUT_LINE('操作完畢'||a);
end;
一.物件型別
declare
jw TEACHERS%ROWTYPE;
begin
select * into jw from teachers where name='王彤';
if(jw.WAGE>2000)
then
update teachers set wage=wage+500 where name='王彤';
else
update teachers set wage=wage-500 where name='王彤';
end if;
commit;
dbms_output.put_line('操作完畢'||jw.wage);
end;
二.swich 1
declare
a number:=1;
begin
case a
when 0 then DBMS_OUTPUT.PUT_LINE('A=0');
WHEN 1 then DBMS_OUTPUT.PuT_LINE('A=1');
else DBMS_OUTPUT.PUT_LINE('都不是');
END CASE;
END;
二.2.
declare
gongzi teachers.wage%type;
begin
select wage into gongzi FROM teachers where name='林飛';
case
when gongzi>1000
then update teachers set wage=wage*1.2 where name='林飛';
when gongzi between 2000 and 4000
then update teachers set wage=wage*1.3 where name='林飛';
else update teachers set wage=wage*1.5 where name='林飛';
end case;
commit;
DBMS_OUTPUT.PUT_LINE(gongzi);
end;
二.3
select case name when '孔世傑' then '陳總' else name end ,wage from Teachers;
三.死迴圈
declare
i number:=0;
sum1 number:=0;
begin
loop
i:=i+1;
sum1:=sum1+1;
exit when i=100;
end loop;
DBMS_OUTPUT.PUT_LINE(SUM1);
end;
四.while
declare
avgSal Teachers.wage%Type;
begin
select avg(wage)into avgSal FROM Teachers;
while(avgSal<2000)
loop
update Teachers set wage=wage+100;
select avg(wage)into avgSal FROM Teachers;
exit when avgSal>3000;
end loop;
commit;
DBMS_OUTPUT.PUT_LINE('cg');
end;
五.for迴圈
declare
i number:=0;
sum1 number:=0;
begin
for i in 1..100
loop
sum1:=sum1+i;
end loop;
DBMS_OUTPUT.PUT_LINE(sum1);
end;
六.普通順序
七. go結構
them goto b
<<b>>
八.帶引數的儲存過程
create or replace procedure aa(name2 teachers.name%type)
as
gongzi TEACHERS.WAGE%type;
begin
select wage into gongzi from teachers where name=name2;
DbMS_OUTPUT.PUT_LINE('CG');
end;
execute aa('xx')
九.
create or replace function fun_aa(name2 varchar2或則name2 teachers.name%type)
return teachers.wage%type
is
gz teachers.wage%type;
begin
select wage into gz from teachers where name=name2;
return gz;
DbMS_OUTPUT.PUT_LINE('CG');
end;
select function('jw') from dual;
十.帶隱式遊標、全域性變數SQL%ROWCOUNT
begin
update TEACHERS SET wage=2000 WHERE NAME='林飛';
if(SQL%ROWCOUNT>1)
THEN
ROLLBACK;
UPDATE TEACHERS SET WAGE=1000;
END IF;
COMMIT;
end;