配色: 字号:
第二章plsql 记录类型
2017-05-16 | 阅:  转:  |  分享 
  
记录类型(type...isrecord)什么是记录类型记录类型是把逻辑相关的数据作为一个单元存储起来,称作PL/SQLRECORD
的域(FIELD),其作用是存放互不相同但逻辑相关的信息。自定义记录类型例:declare--定义一个记录类型typeem
p_recordisrecord(v_namevarchar2(25),v_emailvarchar2(25),v_
salarynumber(8,2),v_job_idvarchar2(10));--声明自定义记录类型的变量v_e
mp_recordemp_record;begin--通过select...into...语句为变量赋值selec
tlast_name,email,salary,job_idintov_emp_recordfromemploye
eswhereemployee_id=186;--打印变量的值dbms_output.put_line(v_emp_
record.v_name||'',''||v_emp_record.v_email||'',''||v_emp_r
ecord.v_salary||'',''||v_emp_record.v_job_id);end;使用%type类型定义
一个变量,其数据类型与已经定义的某个数据变量的类型相同,或者与数据库表的某个列的数据类型相同,这时可以使用%type。其优点在于:
所引用的数据库列的数据类型可以不必知道;所引用的数据库列的数据类型可以实时改变。例:Declare--使用%type声明一个记录
类型的变量typeemp_recordisrecord(v_nameemployees.last_name%type,
v_emailemployees.email%type,v_salaryemployees.salary%type,v_j
ob_idemployees.job_id%type);v_emp_recordemp_record;beginsele
ctlast_name,email,salary,job_idintov_emp_recordfromemploye
eswhereemployee_id=186;dbms_output.put_line(v_emp_record.v_na
me||'',''||v_emp_record.v_email||'',''||v_emp_record.v_sal
ary||'',''||v_emp_record.v_job_id);end;三.使用%rowtype%rowtype
r操作符,返回一个记录类型,其数据类型和数据库表的数据结构相一致。其优点在于:所引用的数据库中列的个数和数据类型可以不必知道;所引
用的数据库中列的个数和数据类型可以实时改变。例:declare--使用%rowtype声明一个记录类型的变量v_emp_rec
ordemployees%rowtype;beginselectintov_emp_recordfromempl
oyeeswhereemployee_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;???如何打印变量的所有值赋值语句(:=)例:输入员工号,显示雇员姓名、工资、个人所得税(税率为0.
03)为例。declare--把税率设置为常量,并赋值c_tax_ratenumber(3,2):=0.03;--把员工姓名
、工资、个人所得税设置为变量v_enamevarchar2(5);v_salnumber(7,2);v_tax_salnum
ber(7,2);beginselectename,salintov_name,v_valfromempwheree
mpno=&no;–-个人所得税=员工工资乘于税率v_tax_sal:=v_taxc_tax_ratedbms_output.
put_line(''姓名是''||v_ename||''工资:''||v_sal||''交税:’||v_tax_sal)end;五.通过变
量赋值实现DELETE、INSERT、UPDATE等操作例:declarev_emp_idemployees.employee
_id%type;beginv_emp_id:=109;deletefromemployeeswhereemployee_id=v_emp_id;--commit;end;
献花(0)
+1
(本文系胡小哈526首藏)