本文介紹獲取會話變量的函數。
背景說明
Oracle中使用USERENV函數獲取當前會話變量,USERENV是Oracle向下兼容的函數,Oracle官方建議使用SYS_CONTEXT函數進行替換,PolarDB O引擎支持使用SYS_CONTEXT函數獲取會話變量。
解決方案
SYS_CONTEXT函數語法:
SYS_CONTEXT('USERENV', attribute)
在PolarDB O引擎中attribute支持:
SESSION_USER、CURRENT_USER、CURRENT_SCHEMA、HOST、IP_ADDRESS、SERVER_HOST
如果需要使用其他attribute,可以使用自建函數實現相同功能:
create or replace function userenv(anynonarray) returns anynonarray as $$
declare
begin
case lower($1)
when '按需配置' then
return 自定義函數();
when '按需配置' then
return 自定義函數();
else
return null;
end case;
end;
$$ language plpgsql strict;
示例
select SYS_CONTEXT('USERENV', 'HOST') from dual;
"42.120.72.81/32"
select SYS_CONTEXT('USERENV', 'CURRENT_USER') from dual;
"admin"