行变量

以行类型定义的变量可以保存一次SELECT或者FOR查询结果的完整一行,只要查询的字段集与该变量的声明类型相匹配。行类型变量的声明语法形式为:

row_var ::=

行变量中的字段是使用常用的点表示法访问的,比如:rowvar.field_name。

除了行变量以外,函数返回值也可以是行类型(函数声明的时候需要使用object table,声明中暂时还不支持tablename%rowtype的用法)。

示例:行变量调用

--  清理环境
DROP TABLE tab CASCADE;
DROP FUNCTION func(INTEGER);

--  创建
CREATE TABLE tab (a int, b int);
INSERT INTO tab VALUES(1,1);
INSERT INTO tab VALUES(2,2);

create or replace function func(i integer) 
        return tab%rowtype as
    ret tab%rowtype;
begin
    select * into ret from tab where a = i; 
    return ret;
end;

/


SELECT func(1);
FUNC(plsql_record)      |
------------------------
PLSQL_RECORD(1, 1)      |
总数目:1

--  删除表
DROP FUNCTION func(INTEGER);
DROP TABLE tab CASCADE;

在一个行类型的变量中,只能访问用户定义的表中的行的用户属性,不包括OID或者其他系统属性。该行类型的数据域继承表中像CHAR(n)这种类型字段的尺寸和精度。