基于索引的单元格访问可用于随机访问(读取和写入)表变量的每个单元格。
.[] 例如,以下示例说明了写入表变量的特定单元格。在此,我们只需更改 A 列的第二行中的值。
create procedure procTCA (
IN intab TABLE(A INTEGER, B VARCHAR(20)),
OUT outtab TABLE(A INTEGER, B VARCHAR(20))
)
AS
BEGIN
intab.A[2] = 5;
outtab = select * from :intab;
END;
从表变量的特定单元格进行读取的方式类似。请注意,对于读取访问,表变量前需要“:”。
create procedure procTCA (
IN intab TABLE(A INTEGER, B VARCHAR(20)),
OUT outvar VARCHAR(20)
)
AS
BEGIN
outvar = :intab.B[100];
END;
<index> 的规则与数组索引的规则相同。这意味着 <index> 可以具有从 1 到 2^31 -2 ([1-2147483646]) 的任何值,并且返回数字的 SQL 表达式或标量用户定义的函数(标量 UDF)也可以用作索引。除了使用常量标量值,还可以使用 INTEGER 类型的标量变量作为 <索引>。
限制:
SELECT :MY_TABLE_VAR.COL[55] AS A FROM DUMMY。需要先将要使用的值分配给标量变量。