最近刚入职,公司用的是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;
新闻热点
疑难解答