将数据类型设为特定表、视图、表引用变量或游标中的行的复合数据类型。
语法
%ROWTYPE
| ROWTYPE OF ( )
:
[ . ]{ | }
|
| TABLE REF ( )
table-name>表的名称。指定 <table-name> 时,%ROWTYPE 变量的数据类型由 <table-name> 中列的数据类型组成。
view-name>已启用视图(包括实例化视图)的名称。实例化视图也必须进行初始化。指定 <view-name> 时,%ROWTYPE 变量的数据类型由 <view-name> 中列的数据类型组成。
cursor-name>游标的名称。指定 <cursor-name> 时,%ROWTYPE 变量的数据类型由游标的选择项目的数据类型组成。
table-reference-variable>表引用变量的名称。指定表引用变量时,%ROWTYPE 变量的数据类型由 <table-reference-variable> 中引用的表的列的数据类型组成。
创建 %ROWTYPE 变量时,其它属性(如缺省值、约束以及是否允许 NULL)不属于继承的定义的一部分,并且必须进行单独指定。
IS OF 搜索表达式、FROM 子句中的 WITH IN
TIMESTAMP
TABLE REF (<table-reference-variable>) %ROWTYPE):创建或更改过程、视图和域时,不支持通过表引用变量指定 %ROWTYPE。类似地,在 IS OF 搜索表达式、FROM 子句中的 WITH TABLE REF (<table-reference-variable>) %ROWTYPE,则在为表引用变量分配值或将其作为参数传递后,该语句必须嵌套在另一个 BEGIN...END 块中。
无。
无。
除了以下示例,在 SQL 语句和函数的文档中还有其它支持指定 %ROWTYPE 属性的示例。
以下示例创建新变量 ItemsForSale,并使用 %ROWTYPE 属性将其数据类型设为由为 Products 表定义的列组成的复合数据类型:
CREATE VARIABLE ItemsForSale Products%ROWTYPE;以下语句声明变量 cust_rec,并将其数据类型设为 Customers 表中行的复合数据类型:
CREATE OR REPLACE PROCEDURE DepartmentsCloseToCustomerLocation( IN customer_ID Customers.ID%TYPE )
BEGIN
DECLARE cust_rec Customers%ROWTYPE;
SELECT City, State, Country
INTO cust_rec.City, cust_rec.State, cust_rec.Country
FROM Customers
WHERE ID = customer_ID;
SELECT Employees.Surname, Employees.GivenName, Departments.DepartmentName
FROM Employees JOIN Departments
ON Departments.DepartmentHeadID = Employees.EmployeeID
WHERE Employees.City = cust_rec.City
AND Employees.State = cust_rec.State
AND Employees.Country = cust_rec.Country;
END;
CALL DepartmentsCloseToCustomerLocation(158);