01_记录类型
1 3.1 自定义记录类型
2
3 declare
4 --定义一个记录类型
5 type customer_type is record(
6 v_cust_name varchar2(20),
7 v_cust_id number(10));
8
9 --声明自定义记录类型的变量
10 v_customer_type customer_type;
11 begin
12 v_customer_type.v_cust_name := '刘德华';
13 v_customer_type.v_cust_id := 1001;
14
15 dbms_output.put_line(v_customer_type.v_cust_name||','||v_customer_type.v_cust_id);
16 end;
17
18
19 3.2 自定义记录类型
20
21 declare
22 --定义一个记录类型
23 type emp_record is record(
24 v_name varchar2(25),
25 v_email varchar2(25),
26 v_salary number(8, 2),
27 v_job_id varchar2(10));
28
29 --声明自定义记录类型的变量
30 v_emp_record emp_record;
31 begin
32 --通过 select ... into ... 语句为变量赋值
33 select last_name, email, salary, job_id into v_emp_record
34 from employees
35 where employee_id = 186;
36
37 -- 打印变量的值
38 dbms_output.put_line(v_emp_record.v_name || ', ' || v_emp_record.v_email || ', ' ||
39 v_emp_record.v_salary || ', ' || v_emp_record.v_job_id);
40 end;
41
42 4. 使用 %type 定义变量,动态的获取数据的声明类型
43
44 declare
45 --定义一个记录类型
46 type emp_record is record(
47 v_name employees.last_name%type,
48 v_email employees.email%type,
49 v_salary employees.salary%type,
50 v_job_id employees.job_id%type);
51
52 --声明自定义记录类型的变量
53 v_emp_record emp_record;
54 begin
55 --通过 select ... into ... 语句为变量赋值
56 select last_name, email, salary, job_id into v_emp_record
57 from employees
58 where employee_id = 186;
59
60 -- 打印变量的值
61 dbms_output.put_line(v_emp_record.v_name || ', ' || v_emp_record.v_email || ', ' ||
62 v_emp_record.v_salary || ', ' || v_emp_record.v_job_id);
63 end;
64
65
66
67 5. 使用 %rowtype
68
69 declare
70 --声明一个记录类型的变量
71 v_emp_record employees%rowtype;
72 begin
73 --通过 select ... into ... 语句为变量赋值
74 select * into v_emp_record
75 from employees
76 where employee_id = 186;
77
78 -- 打印变量的值
79 dbms_output.put_line(v_emp_record.last_name || ', ' || v_emp_record.email || ', ' ||
80 v_emp_record.salary || ', ' || v_emp_record.job_id || ', ' ||
81 v_emp_record.hire_date);
82 end;
83
84 6.1 赋值语句:通过变量实现查询语句
85
86 declare
87 v_emp_record employees%rowtype;
88 v_employee_id employees.employee_id%type;
89 begin
90 --使用赋值符号位变量进行赋值
91 v_employee_id := 186;
92
93 --通过 select ... into ... 语句为变量赋值
94 select * into v_emp_record
95 from employees
96 where employee_id = v_employee_id;
97
98 -- 打印变量的值
99 dbms_output.put_line(v_emp_record.last_name || ', ' || v_emp_record.email || ', ' ||
100 v_emp_record.salary || ', ' || v_emp_record.job_id || ', ' ||
101 v_emp_record.hire_date);
102 end;
103
104 6.2 通过变量实现DELETE、INSERT、UPDATE等操作
105
106 declare
107 v_emp_id employees.employee_id%type;
108
109 begin
110 v_emp_id := 109;
111 delete from employees
112 where employee_id = v_emp_id;
113 --commit;
114 end;