RID 标量函数 (scalar function)
RID函数用于返回记录ID(RID)。 RID用于唯一标识行。
该模式是 SYSIBM。
当一行数据被多次调用时,函数可能会返回不同的值。 例如,在运行REORG实用程序后,RID函数可能返回的行值与运行REORG实用程序之前返回的值不同。 RID功能并非确定性。
- 表号
表名必须是一个外显名称,用于唯一标识引用函数的基表、视图或子查询的嵌套表表达式。
如果表指定符指定了视图或嵌套表表达式,则 RID 函数将返回视图或嵌套表表达式的基础表的 RID。 指定的视图或嵌套表表达式的外层子选择中只能包含一个基础表。
表格编号不得用于:
- 表函数
- 收藏品衍生出的桌子
- 别名、同义词或具体化的观点
- 一个具体化的嵌套表表达式
- 系统周期时间表,如果系统时间敏感绑定选项为“是”
- 如果满足以下条件之一,则启用存档的表格:
- 对于静态语句,存档敏感选项的有效值为“是”。
- 为了动态声明,存档敏感选项设置为“是”,GET_ARCHIVE内置全局变量设置为“Y”。
函数的结果为BIGINT。 结果可以为空值。
注意
- RID值注意事项:
- Db2 在执行REORG操作时,可能会重复使用RID编号。 如果使用RID功能获取某行的值,而应用程序依赖于该值在行存在期间保持不变,请考虑以下替代方案:
- 在表中添加一个ROWID列,以提供与每行相关的值,而不是调用RID函数为行生成一个值。
- 为表定义一个主键,使用主键的列来确保唯一性,而不是调用RID函数为行生成一个值。
示例
- 示例 1:
- 请填写部门“20”中员工的RID和姓氏:
SELECT RID(EMP), LASTNAME FROM EMP WHERE DEPTNO = '20';
示例 2:
在查询中返回部门“20”中员工的RID和姓氏,查询中指定了表EMP的相关名称A。 A是表EMP的公开名称,因此它被用作RID函数的参数。
如果将 EMP 指定为 RID 函数的参数,而不是暴露名称 A,则返回错误。SELECT RID(A), LASTNAME FROM EMP AS A WHERE DEPTNO = '20';
- 示例 3:
- 将主变量 HV_EMP_RID 设置为员工编号为“3500”的员工的RID值:
SELECT RID(EMP) INTO :HV_EMP_RID FROM EMP WHERE EMPNO = '3500';
