Oracle學習-plsql的例子

最近剛入職,公司用的是Oracle,只會用MySQL和熱愛學習的我,開始接觸Oracle了。

代碼純手敲

1、引用型變量

 set serverputout on
declare
pname tb_user.name%type;
page tb_user.age%type;
begin
select name,age into pname,page from tb_user where id =2
--打印
dbms_output.put_line(pname||'的年齡是'||page);
end;
/

2、記錄型變量

set serveroutput on
declare 
rowdata tb_user%rowtype;
begin 
select name,age into rowdata from tb_user where id=1
dbms_output.put_line(rowdata.name||'的年齡是'||rowdata.age);
end;
/

3、if語句

set serveroutput on 
accept num prompt '請輸入一個數字'
declare
pnum number:=#
begin
if pnum=0 then dbms_output.put_line('我輸入的數字是0');
elsif pnum=1 then dbms_output_line('我輸入的數字是1');
else dbms_output.put_line('我輸入的數字是'||pnum);
end if;
end;
/
4、for循環

set serveroutput on
declare
num number :=1;
begin
for num in 1..10 loop
dbms_output.put_line(num);
end loop;
end;
/
5、while循環

set serveroutput on
declare
num number :=1;
begin
while num<=10 loop
dbms_output.put_line(num);
num:=num+1;
end loop;
end;
/
6、loop循環

set serveroutput on
declare
num number:=1;
begin
loop
exit when num>10;
dbms_output.put_line(num);
num:=num+1;
end loop;
end;
/
7、無參的光標(個人理解:光標是ResultSet的所有記錄,需要循環遍歷這個光標)
set serveroutput on
declare
cursor temp is select name,age from tb_user;
pname tb_user.name%type;
page tb_user.age%type;
begin
open temp;
loop
fetch temp into pname,page;
exit when temp%notfound;
dbms_output.put_line(pname||'的年齡是'||page);
end loop;
close temp;
end;
/
8、帶參的光標

set serveroutput on
declare
cursor temp(pid number) is select name,age from tb_user;
pname tb_user.name%type;
page tb_user.age%type;
begin
open temp(1);
loop
fetch temp into pname,page;
exit when temp%notfound;
dbms_output.put_line(pname||'的年齡是'||page);
end loop;
close temp;
end;
/
9、光標的應用

set serveroutput on
declare
cursor temp is select name from tb_user;
pname tb_user.name%type;
begin 
open temp;
loop
fetch temp into pname;
exit when temp%notfound;
if pname='張三' then update tb_user set money=money+500; //表中叫張三的工資加500
elsif pname='李四' then update tb_user set money=money+1000;
end if;
end loop;
close temp;
commit;
dbms_output.put_line('提交完成');
end;
/
10、helloworld(第一個存儲過程)

create or replace procedure sayhelloworld
as
begin
dbms_output.put_line('helloworld');
end;
11、調用存儲過程

begin
sayhelloworld();
end;
12、帶參的存儲過程

create or replace procedure raisemoney(num in number)
as
--定義一個變量保存漲前的薪水
pmoney tb_user.money%type;
begin
select money into pmoney from tb_user where id=num;
dbms_output.put_line('漲前的工資'||pmoney);
dbms_output.put_line('漲後的工資'||(pmoney+100));
end;
13、函數
create or replace function queryuser(num in number)
return number
as
--定義員工年收入
pmoney tb_user.money%type;
begin
--得到員工的月薪
select money into pmoney from tb_user where id=num;
return pmoney*12;
end;



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章