• PL/SQL %TYPE和%ROWTYPE的区别【转】


    %TYPE

             定义一个变量,其数据类型与已经定义的某个 数据变量的类型相同,或者与数据库表的某个列的数据类型
    相同,这时可以使用%TYPE。
            使用%TYPE 特性的优点在于:

                  1.所引用的数据库列的数据类型可以不必知道;
                  2. 所引用的数据库列的数据类型可以实时改变。

    declare
      --定义一个记录类型
      type emp_record is record(
        v_name employees.last_name%type,
        v_email employees.email%type,
        v_salary employees.salary%type,
        v_job_id employees.job_id%type);
        
      --声明自定义记录类型的变量
      v_emp_record emp_record;
    begin
      --通过 select ... into ... 语句为变量赋值
     select last_name, email, salary, job_id into v_emp_record
     from employees
     where employee_id = 101;
     
     -- 打印变量的值
     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;
    

    返回结果:

    Kochhar, NKOCHHAR, 17000, AD_VP
    PL/SQL procedure successfully completed


    %ROWTYPE
               PL/SQL 提供%ROWTYPE  操作符,  返回一个记录类型,  其数据类型和数据库表的数据结构相一致。
              使用%ROWTYPE 特性的优点在于:
                     1.所引用的数据库中列的个数和数据类型可以不必知道;
                     2.所引用的数据库中列的个数和数据类型可以实时改变。

    declare
    --声明一个记录类型的变量
      v_emp_record employees%rowtype;
    begin
      --通过 select ... into ... 语句为变量赋值
     select * into v_emp_record
     from employees
     where employee_id = 101;
     
     -- 打印变量的值
     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;

    返回结果:

    Kochhar, NKOCHHAR, 17000, AD_VP, 21-9月 -89
    PL/SQL procedure successfully completed


    记录类型:
              记录类型是把 逻辑相关 的数据作为一个单元存储起来 ,称作 PL/SQL RECORD 的域(FIELD) ,其作用是存放互不相同但逻辑相关的信息。
             定义记录类型语法如下:
                     TYPE record_type IS RECORD

                      (
                          Field1 type1 [NOT NULL] [:= exp1 ],
                          Field2 type2 [NOT NULL] [:= exp2 ],
                          . . . . . .
                          Fieldn typen [NOT NULL] [:= expn ]

                      ) ;

    提示 : 1) DBMS_OUTPUT.PUT_LINE  过程的功能类似于 Java  中的 System.out.println()  直接将输出结果送到标准输出中 .
              2)  在使用上述过程之前必须将 SQL * PLUS  的环境参数 SERVEROUTPUT  设置为 ON,  否则将看不到输出结果 :  

    set serveroutput on


              可以用 SELECT  语句对记录变量进行赋值,, 只要保证记录字段与查询结果列表中的字段相配即可。

        文章摘自:http://blog.csdn.net/yuzongtao/article/details/40708739

  • 相关阅读:
    PHP配置文件处理类
    PHP中实现图片上传的类库
    在PHP中实现StringBuilder类
    微软官方及第三方SDK http://msdn.microsoft.com/zhcn/jj923044
    在PHP中模拟asp的response类
    Atitit.并发测试解决方案(2) 获取随机数据库记录 随机抽取数据 随机排序 原理and实现
    atitit. access token是什么??微信平台公众号开发access_token and Web session保持状态机制
    atitit.二进制数据无损转字符串网络传输
    atitit.重装系统需要备份的资料总结 o84..
    atitit.web ui 结构建模工具总结
  • 原文地址:https://www.cnblogs.com/dt520/p/6183188.html
Copyright © 2020-2023  润新知