(注:主要摘自尚硅谷oracle教程笔记)
记录类型:
记录类型是把逻辑相关的数据作为一个单元存储起来,称为 PL/SQL RECODE 的域(FIELD),其作用是存放互不相同但逻辑相关的信息。
示例
1.自定义记录类型
declare
--定义一个记录类型
type customer_type is record(
v_cust_name varchar2(20),
v_cust_id number(10));
--声明自定义记录类型的变量
v_customer_type customer_type;
begin
v_customer_type.v_cust_name := '刘德华';
v_customer_type.v_cust_id := 1001;
dbms_output.put_line(
v_customer_type.v_cust_name||','||v_customer_type.v_cust_id
);
end;
2.自定义记录类型
declare
--定义一个记录类型
type emp_record is record(
v_name varchar2(25),
v_email varchar2(25),
v_salary number(8, 2),
v_job_id varchar2(10));
--声明自定义记录类型的变量
v_emp_record emp_record;
begin
--通过 select ... into ... 语句为变量赋值
select last_name, email, salary, job_id into v_emp_record
from employees
where employee_id = 186;
-- 打印变量的值
dbms_output.put_line(
v_emp_record.v_name || ', ' || v_emp_record.v_email || ', ' ||
v_emp_record.v_salary || ', ' || v_emp_record.v_job_id
);
end;
提示:
1.DBMS_OUTPUT.PUT_LINE 过程的功能类似于 Java 中的
System.out.println() 直接将输出结果送到标准输出中
2.在使用上述过程之前必须将 SQL * PLUS 的环境参数 SERVEROUTPUT
设置为 ON,否则将看不到输出结果:
set serveroutput on
3.可以用select 语句对记录变量进行赋值,只要保证记录字段与
查询结果列表中的字段相配即可。
使用 %TYPE
定义一个变量,其数据类型与已经定义的某个数据变量的类型相同,或者与数据库表的某个列的数据类型相同,这时可以使用%TYPE.
使用%TYPE特性的优点在于:
- 所引用的数据库列的数据类型可以不必知道。
- 所引用的数据库列的数据类型可以实时改变。
示例:
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;
赋值语句:通过变量实现查询语句
declare
v_emp_record employees%rowtype;
v_employee_id employees.employee_id%type;
begin
--使用赋值符号位变量进行赋值
v_employee_id := 186;
--通过 select ... into ... 语句为变量赋值
select * into v_emp_record
from employees
where employee_id = v_employee_id;
-- 打印变量的值
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;
通过变量实现DELETE、INSERT、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;