属性类型
📄字数 1.3K
👁️阅读量 加载中...
在 PL/SQL 中,属性类型(Attributes)或称引用类型(Reference)是用于引用其他对象特性的特殊语法,主要用于获取类型信息、集合状态或游标状态。属性类型包括类型引用属性(%TYPE、%ROWTYPE、% ROW TYPE),集合属性(COUNT、FIRST等方法参考集合类型的集合方法章节),游标属性等。
语法格式
参数说明
ColumnName
:存在 TYPE 时,表示自定义类型的名称,可申明变量,无 TYPE 时,表示变量。name_space
:表对象或字段名,当使用 TYPE 时需指定字段名,表示该字段的数据类型;其余两种情况均指定表对象名,表示行类型。
提示
% ROWTYPE
与% ROW TYPE
功能一样。ROWTYPE
与ROW TYPE
功能一样。
- 示例: 自定义方式实现
sql
SQL> CREATE TABLE employees_tab(id INT, first_name VARCHAR, last_name VARCHAR);
SQL> INSERT INTO employees_tab VALUES(1,'zhang','san')(2,'li','si')(3,'wang','wu');
-- 引用表的行数据
SQL> DECLARE
TYPE emp_type IS employees_tab % ROWTYPE;
emp emp_type;
BEGIN
SELECT * INTO emp FROM employees_tab WHERE id = 1;
SEND_MSG(emp.first_name || emp.last_name);
END;
/
--输出
zhangsan
SQL> DECLARE
TYPE emp_type IS ROWTYPE OF employees_tab ;
emp emp_type;
BEGIN
SELECT * INTO emp FROM employees_tab WHERE id = 1;
SEND_MSG(emp.first_name || emp.last_name);
END;
/
--输出
zhangsan
-- 引用表的列数据
SQL> DECLARE
TYPE emp_type IS employees_tab.first_name % TYPE;
emp emp_type;
BEGIN
SELECT first_name INTO emp FROM employees_tab WHERE id = 1;
SEND_MSG(emp);
END;
/
-- 输出
zhang
SQL> DECLARE
TYPE emp_type IS TYPE OF employees_tab.first_name;
emp emp_type;
BEGIN
SELECT first_name INTO emp FROM employees_tab WHERE id = 1;
SEND_MSG(emp);
END;
/
-- 输出
zhang
- 示例: 无自定义类型方式
sql
-- 引用表的行数据
SQL> DECLARE
emp employees_tab % ROWTYPE;
BEGIN
SELECT * INTO emp FROM employees_tab WHERE id = 1;
SEND_MSG(emp.first_name || emp.last_name);
END;
/
-- 输出
zhangsan