华为云云数据库GaussDB赋值语句_云淘科技

变量语法

给变量赋值的语法请参见图1。

图1 assignment_value::=

对以上语法格式的解释如下:

variable_name,为变量名。
value,可以是值或表达式。值value的类型需要和变量variable_name的类型兼容才能正确赋值。

变量赋值示例

1
2
3
4
5
6
7
gaussdb=# DECLARE
    emp_id  INTEGER := 7788;--赋值
BEGIN
    emp_id := 5;--赋值
    emp_id := 5*7784;
END;
/

INTO/BULK COLLECT INTO

将存储过程内语句返回的值存储到变量内,BULK COLLECT INTO允许将部分或全部返回值暂存到数组内部。

示例

gaussdb=# DECLARE
    my_id integer;
BEGIN
    select id into my_id from customers limit 1; -- 赋值
END;
/

gaussdb=# DECLARE
    type id_list is varray(6) of customers.id%type;
    id_arr id_list;
BEGIN
    select id bulk collect into id_arr from customers order by id DESC limit 20; -- 批量赋值
END;
/

BULK COLLECT INTO 只支持批量赋值给数组或集合。数组类型合理使用LIMIT字段避免操作过量数据导致性能下降。

INTO/BULK COLLECT INTO 只支持4层以下Record类型直接嵌套。

对于数组变量,小括号”()”将优先识别为下标,因此对于带括号的表达式,不支持写在数组变量后面。如对于select (1+3) into va(5),不支持写为select into va(5) (1+3)或select into va[5] (1+3)。

父主题: 基本语句

同意关联代理商云淘科技,购买华为云产品更优惠(QQ 78315851)

内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家