您的位置:首页 > 数据库 > Oracle

(Oracle)PL SQL的相关知识与实例

2011-11-19 21:36 429 查看
PLSQL 知识

其实要写的不多,在后面的实例中都有

3种输出格式

<1>dbms_output.put(字符串表达式); 输出字符串,不换行

<2>dbms_output.put_line(字符串表达式); 输出字符串,换行

<3>dbms_output.new_line; 换行

PLSQL 实例

实例1

在emp表中查询empno=7788的雇员姓名和工资

set serveroutput on

declare

v_ename emp.ename%type;

v_sal emp.sal%type;

begin

select ename,sal into v_ename,v_sal from empwhere empno=7788;

dbms_output.put_line(v_ename||'****'||v_sal);

end;

实例2

变量的定义和初始化

set serveroutput on

declare

v_job varchar2(10);

v_count binary_integer default 0;

v_total_sal number(10,2) :=0;

v_date date :=sysdate;

v_tax constant number(3,2) :=5.25;

begin

v_job:='MANAGER';

dbms_output.put_line(v_job);

dbms_output.put_line(v_count);

dbms_output.put_line(v_total_sal);

dbms_output.put_line(v_date);

dbms_output.put_line(v_tax);

end;

实例3

结合变量的定义和使用

第一步

variableg_char varchar2(100) --定义结合变量g_char ,并执行

第二步

set serveroutput on

begin

:g_char:=:g_char||'Hello~'; --调用g_char时g_char前要加':'

dbms_output.put_line(:g_char);

end;

第三步

printg_char --程序结束后用print命令显示结合变量g_char的内容

实例4

记录变量的使用

在emp表中查询empno=7788的雇员姓名

set serveroutput on

declare

emp_record emp%rowtype;

begin

select * into emp_record from emp whereempno=7788;

dbms_output.put_line(emp_record.ename);

end;

实例5

TABLE变量的使用

set serveroutput on

declare

type xingqi_table is table of varchar2(10)index by binary_integer; --声明xingqi_table类型

v_xingqi xingqi_table; --定义变量v_xingqi

begin

v_xingqi(1):='MONDAY';

v_xingqi(2):='TUESDAY';

v_xingqi(3):='WEDNESDAY';

v_xingqi(4):='THURSDAY';

v_xingqi(5):='FRIDAY';

v_xingqi(6):='SATURDAY';

v_xingqi(7):='SUNDAY';

dbms_output.put_line(v_xingqi(7));

end;

实例6

if-then-end if 的用法

判断70度的水是否烧开

set serveroutput on

declare

v_temprature number(5):=70;

begin

if v_temprature<100 then

dbms_output.put_line('水还没有烧开!');

end if;

end;

实例7

if-then-else-end if 的用法

判断100度的水是否烧开

set serveroutput on

declare

v_temprature number(5):=100;

begin

if v_temprature<100 then

dbms_output.put_line('水还没有烧开!');

else

dbms_output.put_line('水开了!');

end if;

end;

实例8

if-then-elsif then-else-end if 的用法

判断薪水为7000的人的收入状况

set serveroutput on

declare

v_salary number(10);

begin

v_salary:=7000;

if v_salary<=1500 then

dbms_output.put_line('您属于低收入群体!');

elsif v_salary<10000 then

dbms_output.put_line('您属于中等收入群体!');

else

dbms_output.put_line('您属于高收入群体!');

end if;

end;

实例9

case的用法

判断80分的成绩等级

set serveroutput on

declare

v_score number(3);

begin

v_score:=80;

case

when v_score>=90 then

dbms_output.put_line('恭喜,您得了优秀!');

when v_score>=80 then

dbms_output.put_line('恭喜,您得了良好!');

when v_score>=60 then

dbms_output.put_line('您得了一般,加油奥!');

else

dbms_output.put_line('您不及格,要下工夫啊!');

end case;

end;

实例10

基本loop的用法

求 1、3、5 ……13、15的平方和

set serveroutput on

declare

v_total number(10) :=0;

v_i number(2):=1;

begin

loop

exit when v_i>15;

v_total:=v_total+v_i**2;

v_i:=v_i+2;

end loop;

dbms_output.put_line(v_total);

end;

实例11

for loop 的用法

set serveroutput on

begin

for i in 1..10

loop

dbms_output.put_line(to_char(i)||rpad('*',i,'*'));

end loop;

end;

实例12

while loop 的用法

求10!的值

set serveroutput on

declare

v_total number(10):=1;

v_i number(2):=1;

begin

while v_i<=10 loop

v_total:=v_total*v_i;

v_i:=v_i+1;

end loop;

dbms_output.put_line(v_total);

end;

实例13

双重循环

求 1!+2!+……+10!的值

set serveroutput on

declare

v_total number(10):=1;

v_i number(2):=1;

v_sum number(10):=0;

begin

for i in 1..10

loop

while v_i<=i loop

v_total:=v_total*v_i;

v_i:=v_i+1;

end loop;

v_sum:=v_sum+v_total;

end loop;

dbms_output.put_line(v_sum);

end;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: