更新时间:2025-06-04 GMT+08:00
userenv
数据库类型与版本
- 源库类型与版本:Oracle所有版本。
- 目标库类型与版本:GaussDB 所有版本。
转换替代方案:
CREATE OR REPLACE FUNCTION dsc_ora_ext.dsc_fn_userenv
/* This function is used to retrieve information about the current session.
Currently the "sid" and "client_info" are supported.
*/
( i_session_attr IN VARCHAR(32) )
RETURN VARCHAR(64)
AS
v_session_attr VARCHAR(32);
v_session_attr_value VARCHAR(64);
BEGIN
v_session_attr := TRIM(i_session_attr);
IF v_session_attr IS NULL
THEN
RAISE EXCEPTION 'Empty string/NULL is an invalid USERENV parameter';
ELSE
v_session_attr := UPPER(v_session_attr);
IF v_session_attr = 'SID'
-- if session id is required
THEN
v_session_attr_value := pg_catalog.pg_backend_pid();
ELSIF v_session_attr = 'CLIENT_INFO'
-- it returns the session's application_name, which is set using set application_name='<<CLIENT APPLICATION NAME>>'
THEN
SELECT s.application_name
INTO v_session_attr_value
FROM pg_catalog.pg_stat_activity s
WHERE s.pid = pg_catalog.pg_backend_pid();
ELSIF v_session_attr = 'SESSION_USER'
-- if session user name is required
THEN
v_session_attr_value := session_user;
ELSIF v_session_attr IN ( 'INSTANCE', 'ENTRYID', 'ISDBA', 'LANG', 'LANGUAGE', 'SESSIONID', 'TERMINAL' )
-- if other valid Oracle parameter is passed
THEN
RAISE EXCEPTION '% is an unsupported USERENV parameter', i_session_attr;
ELSE
-- if invalid parameter is passed
RAISE EXCEPTION '% is an invalid USERENV parameter', i_session_attr;
END IF;
END IF;
RETURN v_session_attr_value;
END;