返回首页

gbase数据、南大通用产品文档:GBase8s更新 row 类型表达式

更新日期:2024年09月11日

从 SPL 例程内,
您可使用 ROW 变量来更新 row 类型表达式。
下图展示当员工的基本薪
酬按某一百分比增长时,用于更新 emp_info 表的 SPL 过程 emp_raise。
图: 用于更新 emp_info 表的 SPL 过程。
CREATE PROCEDURE emp_raise( name VARCHAR(30),
pct DECIMAL(3,2) )

DEFINE row_var salary_t;

SELECT salary INTO row_var FROM emp_info
WHERE emp_name = name;

LET row_var.base = row_var.base * pct;

GBase 8s SQL 指南:教程
南大通用数据技术股份有限公司 - 292 -


UPDATE emp_info SET salary = row_var
WHERE emp_name = name;
END PROCEDURE;
SELECT 语句将来自 emp_info 表的 salary 列的行选择到 ROW 变量 row_var 内。
emp_raise 过程使用 SPL 点符号表示法来直接地访问变量 row_var 的 base 字段。在此情况
下,点符号表示法意味着 variable.field。emp_raise过程重新计算 row_var.base 的值作
为 (row_var.base * pct)。然后,该过程以新的 row_var 值来更新 emp_info 表的 salary 列。
重要: 在可设置或引用 row 类型变量字段之前,必须将它初始化为行。您可以 SELECT INTO
语句或 LET 语句初始化 row 类型变量。

函数原型:
sword GCIIntervalSetDaySecond ( void *hndl,
GCIError *err,
sb4 dy,
sb4 hr,
sb4 mm,
sb4 ss,
sb4 fsec,
GCIInterval *result );
功能描述:

设置GCIInterval 的时间。
参数说明:
hndlp(输入)
上下文或者环境句柄

errhp(输入)


错误信息句柄,该接口调用失败时,错误信息会存在该句柄上。
dy(输入)
单位:日。
hr(输入)
单位:时
mm(输入)
单位:分。
ss(输入)
单位:秒。
fsec(输入)
总共为5 位。
result(输出)
在此结构中得到时间。
返回值:

如果执行成功,返回GCI_SUCCESS,否则返回GCI_ERROR
注:



请参INTERVAL 数据类型阅相关手册

[root@CM1 ~]# cd /opt/GBASE/gbase/etc/
[root@CM1 etc]# su gbasedbt
[gbasedbt@CM1 etc]$ vim sqlhosts.cm1
内容如下:
db_group

group
-


-
i=1
gbaseserver

onsoctcp