【原】Oracle-pl/sql-记录类型

(注:主要摘自尚硅谷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;

你可能感兴趣的:(数据库学习)