验证中...
开源中国 2018 年度最后一场技术盛会邀你来约~错过就要等明年啦!点此立即预约
语言: SQL
分类: 编程语言基础
最后更新于 2018-12-09 10:12
片段 1 片段 2
PLSQL编程
原始数据 复制代码
PL/SQL编程
组成PLSQL的基本单位,或者最小单位,就是匿名块
语法:
declare -- (声明变量)
v_number number :=0 ; -- ":"表示赋值
begin -- (执行流程)
v_number := v_number+1;
dbms_output.put_line(v_number);
end;
Eg: 循环
begin -- (执行流程)
for v in 1..100 loop
dbms_output.put_line(v);
end loop;
end;
Eg2: 查询
begin
for v in (select *from emp) loop
dbms_output.put_line(v.first_name);
end loop;
end;
Eg3:
begin
for v in (select *from emp) loop
if v.salary>3000 then
dbms_output.put_line(v.first_name || v.salary );
end if;
end loop;
end;
-- 编写PLSQL 遍历雇员信息表,如果雇员的工资>8000,在控制台输出高工资。如果工资在8000-5000之间,中等工资,否则就是最低工资。
begin
for v in (select*from employees) loop
if v.salary > 8000 then
dbms_output.put_line(v.first_name || '最高工资' );
elsif
v.salary > 5000 and v.salary <= 8000 then
dbms_output.put_line(v.first_name || '中等工资' );
else
dbms_output.put_line(v.first_name || '最低工资' );
end if;
end loop;
end;
--变量的定义 和赋值 into
v_变量名 变量类型 :=固定值;
表中动态数据 into 变量 into可以跟多个变量
Eg:
declare
v_number number :=0;
begin
select sum(salary) into v_number from employees;
dbms_output.put_line(v_number);
end;
employees.salary%type 表示类型和雇员表的薪水类型一致
employees%rowtype 表示跟雇员表的一行数据类型一致,也就是说
Eg:求雇员表的最低工资 和 雇员的名字(into 两个变量中)
declare
v_salary employees.salary%type;
v_name employees.first_name%type;
begin
select e.salary,e.first_name into v_salary,v_name from employees e where e.salary = (select min(salary) from employees) ;
DBMS_OUTPUT.PUT_LINE( v_salary || v_name );
end;
异常处理
原始数据 复制代码
异常的处理 (others相当于所有异常父类)sqlerrm,sqlcode
判断是否相等 =
赋值 :=
语法:
declare
begin
exception
when others then
end;
eg1:
declare
v_a number:=10;
v_b number:=0;
v_c number;
begin
v_c:=v_a/v_b;
exception
when others then
dbms_output.put_line(substr(sqlerrm,0,200));//substr截取错误异常的错误长度
end;
eg2:
declare
v_salary number;
money_not_enough exception ;-- 自定义一个异常
begin
select max(salary) into v_salary from employees;
if v_salary<1000 then
raise money_not_enough;
end if;
exception
when money_not_enough then
dbms_output.put_line('余额不足');
when others then
dbms_output.put_line(substr(sqlerrm,0,200));
end;
-- 使用PL编程,编写一个除法的PLSQL,如果除数和被除数,有一个是0,抛出操作数不能为0;
-- 如果运算过程中出现异常,控制台显示 未知异常;没有出现异常,则正确输出结果。
declare
v_x number :=10 ;
v_y number :=3 ;
v_z number;
number_has_zero exception;
begin
if v_x = 0 or v_y = 0
then
raise number_has_zero;
end if;
v_z := v_x/ v_y;
dbms_output.put_line(v_z);
exception
when number_has_zero
then
dbms_output.put_line('操作数不能为0');
when others then
dbms_output.put_line('未知异常');
end;

评论列表( 0 )

你可以在登录后,发表评论

搜索帮助