非技术贴,仅作笔记
单行数据的处理,都是结合变量,记录类型来进行数据的中继保存和提取数据的。区别在于从表中提取的数据,中继放到变量中?还是放到记录类型中(记录类型可以理解为统一的数据保存字典)。
一、单行数据
示例①:使用变量实现数据的提取与输出,此例中定义的变量是一一对应的。
查询emp0表中,employee_id为150的行数据,提取employee_id,last_name,salary并格式化输出
declare
v_employee_id emp0.employee_id%type;
v_last_name emp0.last_name%type;
v_salary emp0.salary%type;
begin
select employee_id,last_name,salary into v_employee_id,v_last_name,v_salary from emp0 where employee_id = 150;
dbms_output.put_line('员工号:'||v_employee_id||'#'||'名字:'||v_last_name||'#'||'工资:'||v_salary);
end;
输出结果:员工号:150#名字:Tucker#工资:11940.52
示例②:使用标量实现数据的提取与输出,此例中直接定义变量为表结构。
declare
v_emp0 emp0%rowtype;
begin
select * into v_emp0 from emp0 where employee_id = 150;
dbms_output.put_line(v_emp0.last_name);
end;
输出结果:Tucker
示例③:使用记录类型来统一接收对应的数据,类似于字典。提取的时候对应提取即可。
declare
type emp0_record is record(
v_last_name emp0.last_name%type
);
v_emp0_record emp0_record;
begin
select last_name into v_emp0_record from emp0 where employee_id = 150;
dbms_output.put_line(v_emp0_record.v_last_name);
end;
输出结果:Tucker
示例④:使用记录类型来统一接收对应的数据,类似于字典。提取的时候对应提取即可。
declare
v_emp0_record emp0%rowtype;
begin
select * into v_emp0_record from emp0 where employee_id = 150;
dbms_output.put_line(v_emp0_record.last_name);
end;
输出结果:Tucker