字符操作符”+=”
功能描述
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)