PL/SQL知识点总结
2017-07-26 21:53
218 查看
一、基本语法1.变量的声明和赋值1)单个或多个变量用分号;隔开。赋值使用select ...into...语句,需要与表中选取的数据一一对应。2)使用record记录类型,定义多个变量,中间用逗号,隔开。变量名定义建议带_record标记下。注意分号的位置。3)可以使用%type动态获取变量的类型v_name employees.last_name%type; 4)使用%rowtype声明一个记录类型的变量
declare --声明一个记录类型的变量 v_emp_record employees%rowtype; begin --通过 select ... into ... 语句为变量赋值 select * into v_emp_record from employees where employee_id = 186; -- 打印变量的值 dbms_output.put_line(v_emp_record.last_name || ', ' || v_emp_record.email || ', ' || v_emp_record.salary || ', ' || v_emp_record.job_id || ', ' || v_emp_record.hire_date); end;5)通过变量实现insert,delete,update等操作
declare v_emp_id employees.employee_id%type; begin v_emp_id := 109; delete from employees where employee_id = v_emp_id; --commit; end;二、流程控制1)条件判断(分支)①if...then...elsif...then ... end if;②case...when...then...else...end;declarev_sal employees.salary%type;
--定义变量接收case then语句的返回值 v_temp varchar2(20); begin select salary into v_sal from employees where employee_id = 150; v_temp := case trunc(v_sal/5000) when 2 then 'salary >= 10000' when 1 then '5000<= salary < 10000' else 'salary < 5000' end; dbms_output.put_line(v_temp); end;2)循环①loop 循环体 迭代条件 exit when 循环条件 end loop;②while 循环条件 loop 循环体 迭代条件 end loop;③for 变量 in 循环范围 loop 循环体 end loop; --1-100的打印for i in 1..100 loopdbms_output.put_line(i);end loop;end;--1-100的质数declarev_i number(10):= 2;v_j number(10):= 2;v_flag number := 1;beginwhile v_i <= 100 loopwhile v_j <= sqrt(v_i) loopif (mod(v_i,v_j) = 0) thenv_flag := 0;end if;v_j := v_j + 1;end loop;if (v_flag = 1) then dbms_output.put_line(v_i);end if;v_flag := 1;v_j := 2;v_i := v_i + 1;end loop;end;
declarev_flag number(1):= 1;beginfor i in 2..100 loopfor j in 2..sqrt(i) loopif(mod(i,j) = 0) then v_flag := 0;end if;end loop;if(v_flag = 1) then dbms_output.put_line(i);end if;v_flag := 1;end loop;end;也可以使用到 goto ... label 语句
<<label>.
....三、游标的使用cursor输出多条语句需要使用游标。1)for循环declarecursor sal_cursor is select salary from employees where department_id = 80;beginfor i in sal_cursor loop //这里的i 是个record 存放多个变量dbms_output.put_line('salary '||i.salary);end loop;end;2)while循环声明游标cursor .. is select..from...打开游标open 获取游标fetch..into 某个变量循环遍历%foundwhile()四、异常的处理exception1)预定义异常2)非预定义异常3)自定义异常declare--自定义异常no_result exception;beginupdate employees set salary = salary + 100 where employee_id = 1001;--使用隐式游标, 抛出自定义异常 raiseif sql%notfound thenraise no_result;end if;exception--处理程序抛出的异常when no_result thendbms_output.put_line('更新失败');end;五、存储函数function与存储过程procedure1)存储函数:有返回值return 使用select from dual语句可查询2)存储过程六、触发器triggercreate trigger...after/before ...update/delete/insert操作等...for each row 行级触发,不写为表级触发create table my_emp as select employee_id id, last_name name, salary sal from employeescreate table my_emp_bak as select employee_id id, last_name name, salary sal from employees where 1 = 2create or replace trigger bak_emp_triggerbefore delete on my_empfor each rowbegininsert into my_emp_bak values(:old.id, :old.name, :old.sal);end;
相关文章推荐
- pl/sql知识点总结
- pl/sql语言的中几个知识点的总结(一)
- PL/SQL知识点总结(一)
- Oracle数据库的知识点总结(PL/sql)
- PL/SQL上的使用技巧总结
- Oracle PL/SQL开发利器-Toad应用总结(一)-PL/SQL Program基本编写、调试
- ORACLE PL/SQL 集合API 总结
- PL/SQL 实例总结
- Oracle 编写PL/SQL语句导入数据语句问题总结
- PL/SQL中的编程总结
- 【SQL】Oracle的PL/SQL语法及其拓展数据类型总结
- Oracle PL/SQL开发利器-Toad应用总结(一)-PL/SQL Program基本编写、调试
- Oracle PL/SQL转换方法总结
- Oracle PL/SQL开发利器-Toad应用总结(一)-PL/SQL Program基本编写、调试
- 数据库及SQL----常用知识点总结
- 使用oracle pl/sql developer的几点总结
- 2011-07-12 PL/SQL 知识点
- PL SQL Developer 使用总结
- SQL知识点总结
- PL/SQL Developer连接Oracle服务器的错误解决总结