更新时间: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;