
在 SAP HANA 的 SQLScript 代码里,经常会碰到一种很具体的需求。一个查询已经明确只关心一条记录,但这条记录又不是一个简单的INT、NVARCHAR或TIMESTAMP,而是由订单号、状态、金额、币种、创建时间等多个字段共同组成。如果只使用普通标量变量,就要为每一列声明一个变量,再把查询结果一列一列放进去。字段少的时候还能接受,一旦字段数量变多,代码很快就会变得零散。Row-Type Variable正是针对这种场景提供的一种 SQLScript 数据结构。SAP 对它的定义非常直接,Row-Type Variable 是一组 scalar data type 的集合,可以方便地接收表中的单独一行。当前 SAP HANA Platform 2.0 SPS 08 的 SQLScript Reference 仍然保留了这一能力,SAP HANA Cloud 的 SQLScript Reference 也提供对应语法,因此它并不是只属于早期本地 HANA 的历史特性,而是 SQLScript 数据类型体系中仍然有效的一部分。从编程模型上看,可以把普通 scalar variable 理解成一个格子,把 table variable 理解成一张临时的二维表,而 Row-Type Variable 正好处在二者之间。它只代表一行,却可以拥有多个具名字段。假设有三个值,编号、状态和时间。如果完全依靠 scalar variable,代码可能写成这样。