您好,UncleToo欢迎您!  为了更好的浏览本站,请使用高版本浏览器
RSS  Tag     设为首页 | 加入收藏
 您所在的位置:首页 > 数据库技术 > Oracle

PL/SQL中%type和%rowtype区别及使用方法

作者:未知  来源:转载  日期:2014-11-12 22:00:23
收藏  评论:( 0 )  阅读:501

%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  过程的功能类似于 PHP 中的 echo()  直接将输出结果送到标准输出中 .

         2)  在使用上述过程之前必须将 SQL * PLUS  的环境参数 SERVEROUTPUT  设置为 ON,  否则将看不到输出结果 :  

set serveroutput on

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




PL/SQL
 
除非特别声明,本站所有PHP教程及其他教程/文章均为原创、翻译或网友投稿,版权均归UncleToo中文网所有, 转载请注明作者及出处。
原文网址:http://www.uncletoo.com/html/oracle/1050.html
读完这篇文章后,你是否有所收获? 分享是一种生活的信念!
  • 0
  • 0
我来说两句
更多>>网友评论