首页 > 数据库 > Oracle > 正文

Oracle学习-plsql的例子

2024-08-29 13:54:38
字体:
来源:转载
供稿:网友

最近刚入职,公司用的是Oracle,只会用MySQL和热爱学习的我,开始接触Oracle了。

代码纯手敲

1、引用型变量

 set serverputout ondeclarepname tb_user.name%type;page tb_user.age%type;beginselect name,age into pname,page from tb_user where id =2--打印dbms_output.put_line(pname||'的年龄是'||page);end;/2、记录型变量

set serveroutput ondeclare rowdata tb_user%rowtype;begin select name,age into rowdata from tb_user where id=1dbms_output.put_line(rowdata.name||'的年龄是'||rowdata.age);end;/3、if语句

set serveroutput on accept num PRompt '请输入一个数字'declarepnum number:=#beginif 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 ondeclarenum number :=1;beginfor num in 1..10 loopdbms_output.put_line(num);end loop;end;/5、while循环

set serveroutput ondeclarenum number :=1;beginwhile num<=10 loopdbms_output.put_line(num);num:=num+1;end loop;end;/6、loop循环

set serveroutput ondeclarenum number:=1;beginloopexit when num>10;dbms_output.put_line(num);num:=num+1;end loop;end;/7、无参的光标(个人理解:光标是ResultSet的所有记录,需要循环遍历这个光标)
set serveroutput ondeclarecursor temp is select name,age from tb_user;pname tb_user.name%type;page tb_user.age%type;beginopen temp;loopfetch temp into pname,page;exit when temp%notfound;dbms_output.put_line(pname||'的年龄是'||page);end loop;close temp;end;/8、带参的光标

set serveroutput ondeclarecursor temp(pid number) is select name,age from tb_user;pname tb_user.name%type;page tb_user.age%type;beginopen temp(1);loopfetch temp into pname,page;exit when temp%notfound;dbms_output.put_line(pname||'的年龄是'||page);end loop;close temp;end;/9、光标的应用

set serveroutput ondeclarecursor temp is select name from tb_user;pname tb_user.name%type;begin open temp;loopfetch temp into pname;exit when temp%notfound;if pname='张三' then update tb_user set money=money+500; //表中叫张三的工资加500elsif 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 sayhelloworldasbegindbms_output.put_line('helloworld');end;11、调用存储过程

beginsayhelloworld();end;12、带参的存储过程

create or replace procedure raisemoney(num in number)as--定义一个变量保存涨前的薪水pmoney tb_user.money%type;beginselect 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 numberas--定义员工年收入pmoney tb_user.money%type;begin--得到员工的月薪select money into pmoney from tb_user where id=num;return pmoney*12;end;


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表