ITPub博客

首页 > 数据库 > Oracle > PLSQL Language Referenc-PL/SQL集合和记录-记录变量-%ROWTYPE属性

PLSQL Language Referenc-PL/SQL集合和记录-记录变量-%ROWTYPE属性

原创 Oracle 作者: luisedalian 时间:2014-03-14 07:46:48 0 删除 编辑

%ROWTYPE属性

1)记录变量始终表示整行

变量名 表名/视图名 %ROWTYPE

 

DECLARE

    dept_rec departments%ROWTYPE;

BEGIN 

    dept_rec.department_id   := 10;

    dept_rec.department_name := 'Administration';

    dept_rec.manager_id      := 200;

    dept_rec.location_id     := 1700;   

    DBMS_OUTPUT.PUT_LINE('dept_id:   ' || dept_rec.department_id);

    DBMS_OUTPUT.PUT_LINE('dept_name: ' || dept_rec.department_name);

    DBMS_OUTPUT.PUT_LINE('mgr_id:    ' || dept_rec.manager_id);

    DBMS_OUTPUT.PUT_LINE('loc_id:    ' || dept_rec.location_id);

END;

 

--使用%ROWTYPE定义的记录变量不会继承初始值或约束

DROP TABLE t1;

CREATE TABLE t1 (

    c1 INTEGER DEFAULT 0 NOT NULL,

    c2 INTEGER DEFAULT 1 NOT NULL

);

DECLARE

    t1_row t1%ROWTYPE;

BEGIN

    DBMS_OUTPUT.PUT('t1.c1 = '); print(t1_row.c1);

    DBMS_OUTPUT.PUT('t1.c2 = '); print(t1_row.c2);

END;

2)记录变量,可以表示行的一部分

变量名 光标名%ROWTYPE

光标是与一个查询相关联的。对于查询选择的每个列,记录变量必须有相应的类型兼容的列。如果查询选择了表或视图的所有列,则该变量表示整行,否则该变量表示了行的一部分。光标必须为显式光标强类型的光标变量。

DECLARE

    CURSOR c IS

        SELECT first_name, last_name, phone_number

        FROM employees;

 

    friend c%ROWTYPE;

BEGIN

    friend.first_name   := 'John';

    friend.last_name    := 'Smith';

    friend.phone_number := '1-650-555-1234';

 

    DBMS_OUTPUT.PUT_LINE (

        friend.first_name  || ' ' ||

        friend.last_name   || ', ' ||

        friend.phone_number

    );

END;

 

DECLARE

    CURSOR c2 IS

        SELECT employee_id, email, employees.manager_id, location_id

        FROM employees, departments

        WHERE employees.department_id = departments.department_id;

 

    join_rec c2%ROWTYPE;  -- 包括来自2个表的列

 

BEGIN

    NULL;

END;

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/17013648/viewspace-1118605/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2012-02-06

  • 博文量
    1986
  • 访问量
    5677783