您好,我是小DAI,专注于数据库管理员相关的技术问答,请问有什么可以帮您?

全局会话变量

可以在 SQLScript 中使用全局会话变量,以在同一会话中运行的过程和函数之间共享标量值。全局会话变量的值在其他会话中不可见。

要设置全局会话变量的值,请使用以下语法:

SET  = ;

::= |

::=

虽然 只能是常量字符串或标量变量,但 可以是返回可转换为字符串的值的任何表达式、标量变量或函数。两者的最大长度为 5000 个字符。会话变量无法显式键入,并且属于字符串类型。如果 不是字符串类型,该值将隐式转换为字符串。

下面的示例说明了如何在过程中设置会话变量的值:

CREATE PROCEDURE CHANGE_SESSION_VAR (IN NEW_VALUE NVARCHAR(50))

AS

BEGIN

SET 'MY_VAR' = :new_value;

END

CREATE PROCEDURE CHANGE_SESSION_VAR (IN NEW_VALUE NVARCHAR(50), IN KEY_NAME NVARCHAR(50))

AS

BEGIN

SET :key_name = :new_value || ‘_suffix’;

END

要检索会话变量,可以使用函数 SESSION_CONTEXT ()。

有关 SESSION_CONTEXT 的详细信息,请参阅 SAP Help Portal 上 SAP HANA SQL 和系统视图参考中的 SESSION_CONTEXT。

例如,以下函数检索会话变量 'MY_VAR' 的值

CREATE FUNCTION GET_VALUE ()

RETURNS var NVARCHAR(50)

AS

BEGIN

var = SESSION_CONTEXT('MY_VAR');

END;

备注SET = 不能用于标记为 READ ONLY 的函数和过程(标量和表函数隐式为 READ ONLY)。 备注可以使用部分会话下的配置参数 max_session_variables 配置会话变量的最大数量(最小值 = 1,最大值 = 5000)。缺省值为 1024。 备注缺省情况下,会话变量为空值,可以使用 UNSET <键> 将其重置为空值。有关 UNSET 的详细信息,请参阅 SAP HANA SQL 和系统视图参考中的 UNSET。