云数据库 GAUSSDB-赋值语句:语法格式

时间:2024-07-01 18:36:19

语法格式

SELECT select_expressions INTO [STRICT] target FROM ...
SELECT INTO [STRICT] target [FROM ..]
EXECUTE [IMMEDIATE] select_expressions BULK COLLECT INTO target ...

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

  • select_expressions:查询的SQL语句。通过基础SQL命令加INTO子句可以将单行或多列的结果赋值给一个变量(记录、行类型、标量变量列表)。
  • target :目标变量。可以是一个记录变量、一个行变量或一个有逗号分隔的简单变量和记录/行域列表。
  • STRICT:可选。在开启参数set behavior_compat_options = 'select_into_return_null'的前提下(默认未开启),若指定该选项则该查询必须刚好返回一行不为空的结果集,否则会报错,报错信息可能是NO_DATA_FOUND(没有行)、TOO_MANY_ROWS(多于一行)或QUERY_RETURNED_NO_ROWS (没有数据返回)。若不指定该选项则没有该限定,且支持返回空结果集。
  • BULK COLLECT INTO只支持批量赋值给数组或集合。集合类型合理使用LIMIT字段避免操作过量数据导致性能下降。
  • INTO/BULK COLLECT INTO只支持4层以下Record类型直接嵌套。
  • 返回空结果集需要数据库初始化使用PG兼容参数,配置GUC参数set behavior_compat_options = 'select_into_return_null'为开启配置GUC参数set behavior_compat_options = ''则关闭。
  • 对于数组变量,小括号“()”将优先识别为下标,因此对于带括号的表达式,不支持写在数组变量后面。如对于select (1+3) into va(5),不支持写为select into va(5) (1+3)或select into va[5] (1+3)。
  • INSERT INTO、UPDATE INTO、DELETE INTO和EXECUTION INTO不支持返回空结果集。
  • 给多个变量赋值时,由于后面的变量存在语法错误,所以均不赋值。
  • BULK COLLECT INTO只支持在A兼容性数据库下使用。
  • IMMEDIATE关键字仅用作语法兼容,无实际意义。
support.huaweicloud.com/centralized-devg-v8-gaussdb/gaussdb-42-0799.html