您好,我是小DAI,专注于数据库管理员相关的技术问答,请问有什么可以帮您?

对表变量的基于索引的单元格访问

基于索引的单元格访问可用于随机访问(读取和写入)表变量的每个单元格。

.[]

例如,以下示例说明了写入表变量的特定单元格。在此,我们只需更改 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 类型的标量变量作为 <索引>。

限制:

  • 无法访问物理表

  • 不适用于 SQL 查询,如 SELECT :MY_TABLE_VAR.COL[55] AS A FROM DUMMY。需要先将要使用的值分配给标量变量。