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;



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