行变量¶
以行类型定义的变量可以保存一次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)这种类型字段的尺寸和精度。