最近剛入職,公司用的是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;