Oracle PL/SQL
第五章第五章PL/SQL
SQL>setserveroutputon;--开启客户端输出
SQL>begin
2dbms_output.put_line('世界、你好');
3end;
4/
-------------------------------------------------------------------------
变量输出
SQL>setserveroutputon;
SQL>declare(申明)
2str(变量名)constantvarchar(20):='Oracle11g'
3begin
4dbms_output.put_line(str);
5end;
6/
SQL>setserveroutputon;--开启客户端输出
SQL>begin
2dbms_output.put_line('世界、你好');
3end;
4/
-------------------------------------------------------------------------
变量输出
SQL>setserveroutputon;
SQL>declare(申明)
2str(变量名)constantvarchar(20):='Oracle11g'
3begin
4dbms_output.put_line(str);
5end;
6/
-------------------------------------------------------------------
2013-03-06
判断语句
SQL>declare--申明变量
2numinteger:=1;--给变量赋值
3begin--开始
4ifnum<0--如果num小于0
5thendbms_output.put_line('负数');--那么(then)num是负数
6elsifnum>0--否则num大于0、
7thendbms_output.put_line('正数');--那么num是正数
8else--否则
9dbms_output.put_line('0');--那么num是零
10endif;
11end;
12/
正数
多层结构判断语句
SQL>declare
2scooesinteger:=80;
3begin
4ifscooes>90
5then
6dbms_output.put_line('非常好');
7elsifscooes>80
8then
9dbms_output.put_line('很好');
10elsifscooes>70
11then
12dbms_output.put_line('不错');
13elsifscooes>60
14then
15dbms_output.put_line('及格');
16else
17dbms_output.put_line('很差');
18endif;
19end;
20/
不错
PL/SQLproceduresuccessfullycompleted.
----------------------------------------------------------------------
选择语句
SQL>declare--申明
2vardayinteger:=4;--给变量并且赋值
3resvarchar(20);--申明变量
4begin--开始
5res:=casevarday--将arday对应的值赋给res
6when1then'星期一'--在varday等于1的时候那么就是星期一
7when2then'星期二'.........................
8when3then'星期三'.........................
9when4then'星期四'
10when5then'星期五'
11when6then'星期六'
12when7then'星期天'--在varday等于7的时候那么就是星期天
13end;
14dbms_output.put_line(res);
15end;
16/
星期四
--------------------------------------------------------------------------
while循环语句
SQL>declare
2v_numinteger:=1;
3v_suminteger:=0;
4begin--开始
5whilev_num<11loop--如果v_num小于11开始循环
6v_sum:=v_sum+v_num;--将每次的值相加并且加上本身
7dbms_output.put_line(v_num);--循环输出v_num的值
8ifv_num<11--判断如果v_num小于的11、
9thendbms_output.put_line('+');--那么每次打印一个+
10endif;--判断结束if和endif成对出现
11v_num:=v_num+1;--每次让v_num自加1
12endloop;--循环结束while条件表达式loop和endloop成对出现
13dbms_output.put_line('=');--循环结束输出符号
14dbms_output.put_line(v_sum);--最后打印结果值
15end;--结束begin和end成对出现
16/
1
+
2
+
3
+
4
+
5
+
6
+
7
+
8
+
9
+
10
+
=
55
PL/SQLproceduresuccessfullycompleted.
----------------------------------------------------------
for循环语句
SQL>declare
2v_numinteger;--申明变量
3v_suminteger:=0;--申明变量并且赋值
4begin--开始
5forv_numin1..10loop--循环开始for条件(1..10)从1开始、10结束
6v_sum:=v_sum+v_num;--把每次的和相加
7dbms_output.put_line(v_num);--循环输出v_num的值
8ifv_num<10--如果v_num小于10的情况下
9then--那么
10dbms_output.put_line('+');--循环输出+
11endif;--if和endif成对、出现
12endloop;--循环结束
13dbms_output.put_line('=');
14dbms_output.put_line(v_sum);
15end;--命令结束begin和end成对出现
16/
1
+
2
+
3
+
4
+
5
+
6
+
7
+
8
+
9
+
10
=
55
PL/SQLproceduresuccessfullycompleted.
-----------------------------------------------------------
异常
SQL>declare--申明
2xnumber;--申明变量
3begin--开始
4x:='A123';--给变量赋值
5exception--异常捕捉开始
6whenvalue_error--在value的值错在错误
7then--那么
8dbms_output.put_line('错误');--输出错误
9end;--结束
10/
错误
PL/SQLproceduresuccessfullycompleted.
-------------------------------------------------
简单查询
SQL>declare
2sumsalemp.sal%type;--申明一个变量emp.sal%type(判断数据类型)
3begin--开始
4selectsum(sal)intosumsalfromempgroupbydeptnohavingdeptno=30;--查询数据。将查到的数据放到变量中(sum(sal)[查到的数据]intosumsal[变量])
5ifsumsal>5000then--如果查到的工资少于5000那么.....
6dbms_output.put_line('部门30的工资已经超出了预算,共'||sumsal);--提示超出预算、
7endif;--if和endif成对出现
8end;--结束
9/
部门30的工资已经超出了预算,共9400
***********************************************
SQL>declare
2s_enameemp.ename%type;--设置变量的数据类型
3s_jobemp.job%type;
4s_salemp.sal%type;
5begin
6selectename,job,salintos_ename,s_job,s_salfromempwhereempno=7902;--将查到的数据放到变量中ename,job,sal(前面都是查到的数据)intos_ename,s_job,s_sal(变量)
7dbms_output.put_line('该员工姓名'||s_ename||'职位'||s_job||'工资--字符串之间用||拼接
'||s_sal);
8end;--结束
9/
该员工姓名FORD职位ANALYST工资3000
***************************************************
简单的比较
SQL>declare
2t_salemp.sal%type;--判断数据类型
3begin
4selectsalintot_salfromempwhereempno=7369;--查询数据放到变量中sal[查到的数据]intot_sal[变量]
5case--case表示有以下几种结果
6whent_sal<1000--在t_sal小于1000
7then--那么
8dbms_output.put_line('低工资');--输出提示
9whent_sal>=1000andt_sal<3000--在t_sal大于1000小于3000
10then--那么
11dbms_output.put_line('一般工资');--输出提示
12else--否则
13dbms_output.put_line('高工资');--输出提示
14endcase;--case和caseend成对
15end;
16/
低工资
PL/SQLproceduresuccessfullycompleted.