更新时间:2024-08-09 GMT+08:00
赋值语句
变量语法
给变量赋值的语法请参见图1。
对以上语法格式的解释如下:
- variable_name,为变量名。
- value,可以是值或表达式。值value的类型需要和变量variable_name的类型兼容才能正确赋值。
变量赋值示例
1 2 3 4 5 6 7 8 9 10 11 12 13 |
gaussdb=# DECLARE emp_id INTEGER := 7788;--赋值 BEGIN emp_id := 5;--赋值 DBE_OUTPUT.PRINT_LINE(emp_id); emp_id := 5*7784; DBE_OUTPUT.PRINT_LINE(emp_id); END; / --结果如下: 5 38920 ANONYMOUS BLOCK EXECUTE |
INTO/BULK COLLECT INTO
将存储过程内语句返回的值存储到变量内,BULK COLLECT INTO允许将部分或全部返回值暂存到数组内部。
示例
gaussdb=# DROP TABLE IF EXISTS customers; NOTICE: table "customers" does not exist, skipping DROP TABLE gaussdb=# CREATE TABLE customers(id int,name varchar); CREATE TABLE gaussdb=# INSERT INTO customers VALUES(1,'ab'); gaussdb=# DECLARE my_id integer; BEGIN select id into my_id from customers limit 1; -- 赋值 END; / ANONYMOUS BLOCK EXECUTE 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; / ANONYMOUS BLOCK EXECUTE
- BULK COLLECT INTO 只支持批量赋值给数组或集合。数组类型合理使用LIMIT字段避免操作过量数据导致性能下降。
- 对于数组变量,小括号"()"将优先识别为下标,因此对于带括号的表达式,不支持写在数组变量后面。如对于select (1+3) into va(5),不支持写为select into va(5) (1+3)或select into va[5] (1+3)。
- BULK COLLECT INTO 只支持在ORA兼容性数据库下使用。
父主题: 基本语句