源码-Oracle数据库管理-第十四章-记录与集合-Part 1(使用PL/SQL记录)
来源:互联网 发布:excel vba sql查询 编辑:程序博客网 时间:2024/06/11 10:35
记录:单行多列
集合:多行单列
这样说,确实简单明了啊
--第14章 记录与集合--14.1 使用PL/SQL记录--代码14.1 使用记录的PL/SQL语句块示例DECLARE --定义记录类型 TYPE t_emp IS RECORD ( v_empno NUMBER, v_ename VARCHAR2 (20), v_job VARCHAR2 (9), v_mgr NUMBER (4), v_hiredate DATE, v_sal NUMBER (7, 2), v_comm NUMBER (7, 2), v_deptno NUMBER (2) ); --声明记录类型的变量 emp_info t_emp;BEGIN --从emp表中取出字段值赋给记录类型 SELECT * INTO emp_info FROM emp WHERE empno = 7369; --为记录类型的变量更新新的值 emp_info.v_job:='职员'; emp_info.v_sal:=5000; emp_info.v_hiredate:=TO_DATE ('2016-08-01', 'YYYY-MM-DD'); --向数据库表中更新记录类型的值 UPDATE emp SET ROW=emp_info WHERE empno=emp_info.v_empno;EXCEPTION --异常处理块 WHEN OTHERS THEN NULL;END;select * from emp where empno in(7997,7369);delete from emp where empno=7997;drop trigger t_verify_emptime;--14.1.2 定义记录类型--1. 使用%rowtype定义记录类型--代码14.2 使用%rowtype定义记录类型DECLARE --声明记录类型的变量,引用emp表中的行记录 emp_info emp%ROWTYPE;BEGIN --从emp表中取出字段值赋给记录类型 SELECT * INTO emp_info FROM emp WHERE empno = 7369; --为记录类型的变量更新新的值 emp_info.empno:=7999; emp_info.ename:='李天思'; emp_info.job:='职员'; emp_info.sal:=5000; --向数据库表中更新记录类型的值 INSERT INTO emp VALUES emp_info;EXCEPTION WHEN OTHERS THEN DBMS_OUTPUT.put_line('数据插入失败!'); --异常处理块;END;--代码14.3 使用%rowtype定义游标记录类型DECLARE --定义一个游标类型 CURSOR c_emp IS SELECT empno, ename, job, sal, comm, deptno FROM emp; --声明记录类型的变量,使用游标的SELECT列表作为记录成员 emp_info c_emp%ROWTYPE;BEGIN --从emp表中取出字段值赋给记录类型 SELECT empno, ename, job, sal, comm, deptno INTO emp_info FROM emp WHERE empno = 7369; --为记录类型的变量更新新的值 emp_info.ename := '李天思'; emp_info.job := '职员'; emp_info.sal := 5000; emp_info.deptno:= 30; emp_info.empno :=7997; --向数据库表中插入记录类型的值 INSERT INTO emp (empno, ename, job, sal, comm, deptno) VALUES(emp_info.empno, emp_info.ename, emp_info.job, emp_info.sal, emp_info.comm, emp_info.deptno);EXCEPTION --异常处理块 WHEN OTHERS THEN RAISE;END;--2. 使用type record定义记录类型--代码14.4 使用type record定义记录类型DECLARE --定义记录类型 TYPE t_dept IS RECORD( dept_id dept.deptno%TYPE, dept_name VARCHAR2(30), dept_loc VARCHAR2(30)); --声明一个记录类型的变量 rec_dept t_dept;BEGIN --为记录类型的变量中的成员赋值 rec_dept.dept_id := 90; rec_dept.dept_name := '经济管理部'; rec_dept.dept_loc := '南宁'; --输出记录类型成员的值 DBMS_OUTPUT.put_line(rec_dept.dept_id || ' ' || rec_dept.dept_name || ' ' || rec_dept.dept_loc);END;--3. 使用%type基于其他记录类型定义记录类型--代码14.5 使用%type引用其他变量的记录类型DECLARE --定义记录类型 TYPE t_dept IS RECORD( dept_id dept.deptno%TYPE, dept_name VARCHAR2(30), dept_loc VARCHAR2(30)); --声明一个记录类型的变量 rec_dept t_dept; dept_loc rec_dept%TYPE; --定义一个基于rec_dept的记录类型BEGIN --为记录类型的变量中的成员赋值 dept_loc.dept_id := 90; dept_loc.dept_name := '经济管理部'; dept_loc.dept_loc := '南宁'; --输出记录类型成员的值 DBMS_OUTPUT.put_line(dept_loc.dept_id || ' ' || dept_loc.dept_name || ' ' || dept_loc.dept_loc);END;--14.1.3 记录类型赋值--代码14.6 定义记录类型并赋初始值DECLARE --定义记录类型,并且指定NOT NULL约束和初始值 TYPE t_dept IS RECORD ( dept_id NUMBER(4) NOT NULL := 10, dept_name VARCHAR2(30) NOT NULL := '行政部', mgr_id NUMBER(6) DEFAULT 7369, loc_id NUMBER(4) ); dept_rec t_dept; --定义一个记录类型的变量 dept_rec_2 dept_rec%TYPE; --定义一个与dept_rec相同类型的记录变量 BEGIN --输出dept_rec变量的成员值 DBMS_OUTPUT.put_line('dept_rec:'); DBMS_OUTPUT.put_line('---------'); DBMS_OUTPUT.put_line('dept_id: ' || dept_rec.dept_id); DBMS_OUTPUT.put_line('dept_name: ' || dept_rec.dept_name); DBMS_OUTPUT.put_line('mgr_id: ' || dept_rec.mgr_id); DBMS_OUTPUT.put_line('loc_id: ' || dept_rec.loc_id); --输出dept_rec_2变量的成员值 DBMS_OUTPUT.put_line('-----------'); DBMS_OUTPUT.put_line('dept_rec_2:'); DBMS_OUTPUT.put_line('-----------'); DBMS_OUTPUT.put_line('dept_id: ' || dept_rec_2.dept_id); DBMS_OUTPUT.put_line('dept_name: ' || dept_rec_2.dept_name); DBMS_OUTPUT.put_line('mgr_id: ' || dept_rec_2.mgr_id); DBMS_OUTPUT.put_line('loc_id: ' || dept_rec_2.loc_id);END;/--1.简单赋值--代码14.7 使用简单赋值语法为记录变量赋值DECLARE dept_rec dept%ROWTYPE; --定义一个引用dept表行的记录变量BEGIN --使用简单赋值方法为记录类型赋值 dept_rec.deptno:= 10; dept_rec.dname := '人事部'; dept_rec.loc :='嘉定'; -- 输出记录中的部门信息 DBMS_OUTPUT.put_line('部门编号:' || dept_rec.deptno); DBMS_OUTPUT.put_line('部门名称:' || dept_rec.dname); DBMS_OUTPUT.put_line('部门地址:' || dept_rec.loc); END;--2.使用其他记录赋值--代码14.8 使用其他记录变量为记录成员赋值DECLARE --定义记录类型 TYPE emp_rec IS RECORD ( empno NUMBER, ename VARCHAR2 (20) ); --定义与emp_rec具有相同成员的记录类型 TYPE emp_rec_dept IS RECORD ( empno NUMBER, ename VARCHAR2 (20) ); emp_info1 emp_rec; --声明2个emp_rec类型的记录变量 emp_info2 emp_rec; emp_info3 emp_rec_dept; --声明一个emp_rec_dept的记录变量 --定义一个内嵌过程用来输出记录信息 PROCEDURE printrec (empinfo emp_rec) AS BEGIN DBMS_OUTPUT.put_line ('员工编号:' || empinfo.empno); DBMS_OUTPUT.put_line ('员工名称:' || empinfo.ename); END; BEGIN emp_info1.empno := 7369; --为emp_info1记录赋值 emp_info1.ename := '史密斯'; DBMS_OUTPUT.put_line ('emp_info1的信息如下:'); printrec (emp_info1); --打印赋值后的emp_info1记录 emp_info2 := emp_info1; --正确的语句,将emp_info1记录变量直接赋给emp_info2 DBMS_OUTPUT.put_line ('emp_info2的信息如下:'); printrec (emp_info2); --打印赋值后的emp_info2的记录 --emp_info3:=emp_info1; --错误的语句,不同记录类型的变量不能相互赋值END;--代码14.9 使用%rowtype定义的记录变量进行赋值DECLARE --定义记录类型 TYPE emp_rec IS RECORD ( empno emp.empno%TYPE, ename emp.ename%TYPE ); --定义一个游标,用来取emp表中的部分字段 CURSOR c_emp IS SELECT empno, ename FROM emp; emp_info1 emp_rec; --声明2个emp_rec类型的记录变量 emp_info2 emp_rec; emp_info3 c_emp%ROWTYPE; --声明一个emp_rec_dept的记录变量 --定义一个内嵌过程用来输出记录信息 PROCEDURE printrec (empinfo emp_rec) AS BEGIN DBMS_OUTPUT.put_line ('员工编号:' || empinfo.empno); DBMS_OUTPUT.put_line ('员工名称:' || empinfo.ename); END; BEGIN emp_info1.empno := 7369; --为emp_info1记录赋值 emp_info1.ename := '史密斯'; DBMS_OUTPUT.put_line ('emp_info1的信息如下:'); printrec (emp_info1); --打印赋值后的emp_info1记录 emp_info2 := emp_info1; --正确的语句,将emp_info1记录变量直接赋给emp_info2 DBMS_OUTPUT.put_line ('emp_info2的信息如下:'); printrec (emp_info2); --打印赋值后的emp_info2的记录 emp_info3:=emp_info1; --将emp_info1的值赋给emp_info3 DBMS_OUTPUT.put_line ('emp_info3的信息如下:'); printrec (emp_info3); --输出emp_info3变量的值END;
0 0
- 源码-Oracle数据库管理-第十四章-记录与集合-Part 1(使用PL/SQL记录)
- 源码-Oracle数据库管理-第十四章-记录与集合-Part 2(使用PL/SQL记录)
- 源码-Oracle数据库管理-第十四章-记录与集合-Part 3(使用集合类型)
- 源码-Oracle数据库管理-第十四章-记录与集合-Part 4(使用集合类型)
- 源码-Oracle数据库管理-第十二章-使用PL/SQL创建Oracle程序-Part 1(PL/SQL基础)
- 源码-PL/SQL从入门到精通-第八章-记录与集合-Part 1
- 源码-Oracle数据库管理-第十二章-使用PL/SQL创建Oracle程序-Part 2(PL/SQL语言概览)
- 源码-Oracle数据库管理-第十二章-使用PL/SQL创建Oracle程序-Part 3(PL/SQL语言概览)
- 源码-Oracle数据库管理-第十二章-使用PL/SQL创建Oracle程序-Part 4(PL/SQL语言概览)
- 源码-Oracle数据库管理-第十二章-使用PL/SQL创建Oracle程序-Part 5(PL/SQL语言概览)
- 源码-PL/SQL从入门到精通-第八章-记录与集合-Part 2
- 源码-PL/SQL从入门到精通-第八章-记录与集合-Part 3
- 源码-Oracle数据库管理-第十三章-子程序和包-Part 4(定义PL/SQL包)
- 第五章 PL/SQL集合与记录
- 第五章 PL/SQL集合与记录
- PL/SQL 嵌套记录与记录集合
- PL/SQL嵌套记录与记录集合
- 源码-Oracle数据库管理-第九章-SQL查询-Part 4(集合运算和子查询)
- cogs 2521. 首遇lancer
- Android中实现上下左右都可滑动的ScrollView
- 王学岗滑动视图的设计(下)
- java的三大特性
- poj 3252 Round Numbers
- 源码-Oracle数据库管理-第十四章-记录与集合-Part 1(使用PL/SQL记录)
- Hibernate-HQL Query接口简介
- html 外联样式表引用错误
- 王学岗RxJava(五)
- C#生成二维码
- UVA - 10591Happy Number
- 微信开发学习笔记四(html网页解析)
- codeforces--733B. Parade
- 利用javaScript实现图片轮播器