Oracle 小记
来源:互联网 发布:家庭网络服务器 编辑:程序博客网 时间:2024/05/21 07:51
Record
DECLARE--定义与hr.employees表中的这几个列相同的记录数据类型 TYPE RECORD_TYPE_EMPLOYEES IS RECORD( f_name hr.employees.first_name%TYPE, h_date hr.employees.hire_date%TYPE, j_id hr.employees.job_id%TYPE);--声明一个该记录数据类型的记录变量 v_emp_record RECORD_TYPE_EMPLOYEES;BEGIN SELECT first_name, hire_date, job_id INTO v_emp_record FROM employees WHERE employee_id = &emp_id; DBMS_OUTPUT.PUT_LINE('雇员名称:'||v_emp_record.f_name ||' 雇佣日期:'||v_emp_record.h_date ||' 岗位:'||v_emp_record.j_id);END;一个记录类型的变量只能保存从数据库中查询出的一行记录,若查询出了多行记录,就会出现错误。
VARRAY
对于VARRAY数据类型来说,必须经过三个步骤,分别是:定义、声明、初始化。
DECLARE--定义一个最多保存5个VARCHAR(25)数据类型成员的VARRAY数据类型 TYPE reg_varray_type IS VARRAY(5) OF VARCHAR(25);--声明一个该VARRAY数据类型的变量 v_reg_varray REG_VARRAY_TYPE;BEGIN--用构造函数语法赋予初值 v_reg_varray := reg_varray_type ('中国', '美国', '英国', '日本', '法国'); DBMS_OUTPUT.PUT_LINE('地区名称:'||v_reg_varray(1)||'、' ||v_reg_varray(2)||'、' ||v_reg_varray(3)||'、' ||v_reg_varray(4)); DBMS_OUTPUT.PUT_LINE('赋予初值NULL的第5个成员的值:'||v_reg_varray(5));--用构造函数语法赋予初值后就可以这样对成员赋值 v_reg_varray(5) := '法国'; DBMS_OUTPUT.PUT_LINE('第5个成员的值:'||v_reg_varray(5));END;
定义一个变量,其数据类型与已经定义的某个数据变量(尤其是表的某一列)的数据类型相一致,这时可以使用%TYPE。
使用%TYPE特性的优点在于:
所引用的数据库列的数据类型可以不必知道;
所引用的数据库列的数据类型可以实时改变,容易保持一致,也不用修改PL/SQL程序。
DECLARE v_empno emp.empno%TYPE :=&no; Type t_record is record ( v_name emp.ename%TYPE, v_sal emp.sal%TYPE, v_date emp.hiredate%TYPE); Rec t_record;BEGIN SELECT ename, sal, hiredate INTO Rec FROM emp WHERE empno=v_empno; DBMS_OUTPUT.PUT_LINE(Rec.v_name||'---'||Rec.v_sal||'--'||Rec.v_date);END;
%ROWTYPE
PL/SQL 提供%ROWTYPE操作符, 返回一个记录类型, 其数据类型和数据库表的数据结构相一致。
使用%ROWTYPE特性的优点在于:
所引用的数据库中列的个数和数据类型可以不必知道;
所引用的数据库中列的个数和数据类型可以实时改变,容易保持一致,也不用修改PL/SQL程序。
DECLARE v_empno emp.empno%TYPE :=&no; rec emp%ROWTYPE;BEGIN SELECT * INTO rec FROM emp WHERE empno=v_empno; DBMS_OUTPUT.PUT_LINE('姓名:'||rec.ename||'工资:'||rec.sal||'工作时间:'||rec.hiredate); END;
if循环
IF <布尔表达式> THEN
PL/SQL 和 SQL语句
ELSE
其它语句
END IF;
CASE 条件表达式
WHEN 条件表达式结果1 THEN
语句段1
WHEN 条件表达式结果2 THEN
语句段2
......
WHEN 条件表达式结果n THEN
语句段n
[ELSE 条件表达式结果]
END;
loop 循环
LOOP
要执行的语句;
EXIT WHEN <条件语句> --条件满足,退出循环语句
END LOOP;
while 循环
WHILE <布尔表达式> LOOP
要执行的语句;
END LOOP;
数字循环
[<<循环标签>>]
FOR 循环计数器 IN [ REVERSE ] 下限 .. 上限 LOOP
要执行的语句;
END LOOP [循环标签];
每循环一次,循环变量自动加1;使用关键字REVERSE,循环变量自动减1。跟在IN REVERSE 后面的数字必须是从小到大的顺序,而且必须是整数,不能是变量或表达式。可以使用EXIT 退出循环。
BEGIN
FOR int in 1..10 LOOP
DBMS_OUTPUT.PUT_LINE('int 的当前值为: '||int);
END LOOP;
END;
- Oracle 小记
- Oracle小记
- Oracle 小记
- 【Oracle】小记
- oracle小记
- Oracle小记
- Oracle小记
- Oracle小记
- Oracle小记
- Oracle 小记
- ORACLE小记
- Oracle 小记
- Oracle小记
- ORACLE dblink 小记
- oracle rownum使用小记
- oracle 存储过程小记
- oracle 触发器小记
- Oracle 错误小记
- 深入理解重建索引
- c语言
- Android网络编程
- 一边掉眼泪,一边用文字诉说_伤感日志
- sqlite驱动的x86 x64问题
- Oracle 小记
- Ubuntu 12.10开发代号“Quantal Quetzal”
- CIO如何计算信息化的投资回报率?
- Ubuntu 12.10 的5个看点
- 新安装 Ubuntu 12.10 需要做的 10 件事
- android 布局中的单位及分辨率自解
- Win8触控时代来了,该跟Windows XP说再见了
- Ubuntu 12.10打破PC与网络藩篱 整合云端应用
- 长度为1的线段,随机在其上选择两点,将线段分为三段,问这3个字段能组成一 个三角形的概率是多少