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