VastbaseG100

基于openGauss内核开发的企业级关系型数据库。

Menu

字符操作符”+=”

功能描述

Vastbase在SQLServer兼容模式下支持+=字操作符,用于对字符类型的用户自定义变量的连接和赋值操作。

该功能依赖于@var特性在SQLServer兼容模式中的实现,因此使用该功能必须开启GUC参数enable_set_variable_mssql_format,用法为@var+=expr,其中expr和用户自定义变量必须时text类型。

注意事项

  • 该功能仅在数据库兼容模式为SQLServer时能够使用(即创建DB时DBCOMPATIBILITY='MSSQL'),在其他数据库兼容模式下不能使用该特性。

  • 用户必须预先定义变量的值或者类型才可以对变量使用+=操作符进行连接,其中变量类型必须时text类型。

示例

前置步骤:

1、创建兼容模式为SQLServer的库db_sqlserver,并进入。

CREATE DATABASE db_sqlserver DBCOMPATIBILITY='MSSQL';
\c db_sqlserver

2、开启GUC参数[enable_set_variable_mssql_format]()。

set enable_set_variable_mssql_format=on;

示例1: 直接使用+=操作符。

1、定义变量。

declare @v1 text;
declare @v2 text;

2、为变量赋值。

set @v1 = 'aa';
set @v2 = 'bb';
set @v1 += @v2 + case when @v1 = 'aa' then 'cc' else 'dd' end;

3、查询@v1结果。

select @v1;

返回结果为:

  @v1
--------
 aabbcc
(1 row)

示例2: 在存储过程中使用+=操作符。

1、创建存储过程。

create procedure proc_test(a text)
as
declare
@v1 text;
@v2 text;
begin
set @v1 = 'This is the original.';
set @v2 = a;
set @v1 += @v2;
raise info 'v1: %',@v1;
end;
/

2、调用存储过程。

call proc_test(' More text.');

返回结果为:

INFO:  v1: This is the original. More text.
 proc_test
-----------

(1 row)