pl/sql记录类型

1.定义plsql记录
    可以自定义记录类型和记录变量。
    也可以使用%rowtype属性定义记录变量。

自定义plsql记录
    需要分别定义记录类型和记录变量。
    例如:
declare
      type emp_record_type is record(       //定义记录类型
           name emp.ename%type,            //记录成员
           sal emp.sal%type,
           job emp.job%type
      );
      emp_record emp_record_type;               //声明emp_record记录变量


使用%ROWTYPE属性定义记录变量
    %ROWTYPE可以基于表或视图定义记录变量。当使用该属性定义记录变量时,记录成员的名称和类型与表或视图列的名称和类型完全相同。
    例如:
declare
  emp_record emp%rowtype;

2.使用plsql记录。
    在select into语句中使用plsql记录。如果选择列表包含的多个列和表达式,并且使用标量接收数据,就需要定义多个标量,如果使用plsql记录接收数据就只需要定义一个记录变量即可,从而简化了数据的处理。
    在select..into语句中使用plsql记录时,既可以使用记录变量,也可以使用记录成员。
   
    在select..into中使用记录变量。
    例如:
declare
  type emp_record_type is record(
       v_no emp.empno%type,
       v_name emp.ename%type,
       v_sal emp.sal%type
  );
  emp_record emp_record_type;
begin
  select empno,ename,sal into emp_record from emp where empno=6044;
  dbms_output.put_line(emp_record.v_no);
  dbms_output.put_line(emp_record.v_name);
  dbms_output.put_line(emp_record.v_sal);
end;
   
    注意:当引用记录成员时,必须在成员明之前加记录变量名作为前缀。

    在select..into中使用记录成员。
    例如:
declare
  type emp_record_type is record(
       v_no emp.empno%type,
       v_name emp.ename%type,
       v_sal emp.sal%type
  );
  emp_record emp_record_type;
begin
  select empno,sal,ename into emp_record.v_no,emp_record.v_sal,emp_record.v_name
  from emp where empno=6044;
  dbms_output.put_line(emp_record.v_no);
  dbms_output.put_line(emp_record.v_name);
  dbms_output.put_line(emp_record.v_sal);
end;

    注意:选择列表项和记录成员的匹配问题。

    在insert语句中使用plsql记录(使用记录成员)
    例如:
declare
  temp_record temp%rowtype;
begin
  temp_record.CUSTOMER_NAME:='张三';
  temp_record.CITY:='北京';
  insert into temp values(temp_record.CUSTOMER_NAME,temp_record.CITY);
end;

    在updat语句中使用plsql记录(使用记录成员)
    例如:
declare
  temp_record temp%rowtype;
begin
  temp_record.CUSTOMER_NAME:='王五';
  temp_record.CITY:='上海';
  update temp set temp.customer_name=temp_record.CUSTOMER_NAME,
  city=temp_record.CITY
  where CUSTOMER_NAME='张三';
end;

    在delete语句中使用plsql记录
    例如:
declare
  temp_record temp%rowtype;
begin
  temp_record.CUSTOMER_NAME:='王五';
  delete from temp where temp.customer_name=temp_record.CUSTOMER_NAME;
        end;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值