PL/SQL编程
来源:互联网 发布:访客网络限速多少 编辑:程序博客网 时间:2024/06/04 21:16
DECLARE
--声明部分:声明PL/SQL用到的变量、类型及游标、以及局部的存储过程和函数。
变量名 变量类型(表.列%TYPE(与表里的列值相同)) := 给变量赋值;
变量名 变量类型 表.%ROWTYPE 与表里的一行值相同 := 给变量赋值;
BEGIN
--执行部分:过程及SQL语句,即程序的主要部分
SELECT 表列名 INTO 变量名(给变量赋值) FROM 表
--条件控制
IF 布尔表达式 THEN
PL/SQL 和 SQL语句
ELSE
其他语句
END IF;
--CASE选择结构
CASE
WHEN 条件表达式1 THEN
语句段1
WHEN 条件表达式2 THEN
语句段2
END CASE;
--循环控制
LOOP
要执行的语句;
EXIT WHEN 条件语句 判断停止循环条件;
END LOOP;
EXCEPTION
--异常处理部分:错误处理
WHEN 异常 THEN
输出 异常错误;
END;
-- 游标
DECLARE
cursor emp_cursor (游标名称) IS SELECT sal,empno,deptno FROM EMPLOYEE;
emp_record emp_cursor%rowtype;
e_cname_is_null EXCEPTION; -- 自定异常
BEGIN
IF not emp_cursor%ISOPEN THEN --判断游标是否打开
open emp_cursor; --打开游标
END IF;
LOOP
FETCH emp_cursor INTO emp_record;
exit WHEN emp_cursor%NOTFOUND;
IF emp_record.sal >= 10000 THEN -- 当钱大于或等于10000 则输出异常
RAISE e_cname_is_null;
ELSE -- 否则把钱小于10000的全部修改为10000
UPDATE EMPLOYEE SET SAL = 10000 WHERE EMPNO = emp_record.empno AND emp_record.deptno = 10;
end if;
END LOOP;
close emp_cursor; --关闭游标
EXCEPTION
WHEN e_cname_is_null THEN -- 输出自定义异常
dbms_output.put_line('工资不低于10000!');
WHEN OTHERS THEN
dbms_output.put_line('其他异常');
END;
--存储过程
CREATE OR REPLACE PROCEDURE get_sals(存储过程名称) (
cur_salary OUT SYS_REFCURSOR, -- SYS_REFCURSOR 系统游标类型
on_Flag out NUMBER,
os_Msg out VARCHAR2
)
AS
BEGIN
OPEN cur_salary FOR
SELECT empno,sal FROM employee;
EXCEPTION
when others then
on_Flag := -1;
os_Msg := '查询失败';
END;
--调用存储过程
declare
cur_salary SYS_REFCURSOR;
v_cmpno employee.empno%TYPE;
v_sal employee.sal%TYPE;
on_Flag NUMBER;
os_Msg VARCHAR2(10);
BEGIN
get_sals(cur_salary,on_Flag,os_Msg);
OPEN cur_salary;
LOOP
fetch cur_salary into v_cmpno,v_sal;
exit WHEN cur_salary%NOTFOUND;
DBMS_OUTPUT.PUT_LINE
('第'||'个雇员:'||v_cmpno||v_sal);
END LOOP;
close cur_salary;
dbms_output.put_line(os_Msg);
end;
- PL/SQL编程基础
- pl/sql 编程入门
- pl/sql编程
- Oracle PL/SQL编程
- oracle pl/sql 编程
- pl/sql编程
- PL/SQL编程
- 《PL/SQL编程》
- PL/SQL编程笔记
- PL/SQL编程
- oracle pl/sql 编程
- pl/sql编程
- PL/SQL编程入门
- ORACLE PL/SQL编程
- Oracle PL/SQL编程
- oracle-pl/sql编程
- PL/SQL编程2
- PL/SQL编程3
- hibernate的N+1问题解析
- iis应用程序连接池在计算机“.”上没有找到WAS服务的解决办法
- Linux PHP开发环境:CentOS下配置LAMP开发环境
- LA 2038 Strategic game
- 基础知识整理
- PL/SQL编程
- Nagios + cacti监控系统
- BNU 24258 Journey (LCA)
- 伊斯坦布尔之旅第五天:伊斯兰科学技术历史博物馆和gulhane公园
- 线程间的内存共享问题----你弄懂了吗?
- C++Primer第五版 11.3.1节练习
- datepicker插件实现开始日期(minDate)和结束日期(maxDate)
- 1010. Radix (25)
- TextField 知识点(三)