使用SYS_CONTEXT
使用SYS_CONTEXT
1、什么是SYS_CONTEXT?
SYS_CONTEXT 函数是Oracle提供的一个获取环境上下文信息的预定义函数。
该函数用来返回一个指定namespace下的parameter值。该函数可以在SQL和PL/SQL语言中使用。
上下文定义
(a set of application-defined attributes that validates and secures an application 一组由应用程序定义的属性用于验证和保护应用。)
2、语法
SYS_CONTEXT 语法格式:SYS_CONTEXT(‘namespace’,’parameter’{,LENGTH});
其中,namespace是存储信息的一个组group单位,namespace是按照类别进行分类的。
一个namespace下可以有多个参数值,通过不同的parameter进行区分。namespace是预先定义好的SQL标识符,而parameter是可以任意大小写非敏感的字符串,不超过30位长度。
函数返回值为varchar2类型,长度默认为256位。如果需要限制这个默认值,可以数据length参数作为新的返回长度值。
3、预定义的namespace – USERENV
常用parameters:
SELECT SYS_CONTEXT ('USERENV', 'TERMINAL') terminal,
SYS_CONTEXT ('USERENV', 'LANGUAGE') language,
SYS_CONTEXT ('USERENV', 'SESSIONID') sessionid,
SYS_CONTEXT ('USERENV', 'INSTANCE') instance,
SYS_CONTEXT ('USERENV', 'ENTRYID') entryid,
SYS_CONTEXT ('USERENV', 'ISDBA') isdba,
SYS_CONTEXT ('USERENV', 'NLS_TERRITORY') nls_territory,
SYS_CONTEXT ('USERENV', 'NLS_CURRENCY') nls_currency,
SYS_CONTEXT ('USERENV', 'NLS_CALENDAR') nls_calendar,
SYS_CONTEXT ('USERENV', 'NLS_DATE_FORMAT') nls_date_format,
SYS_CONTEXT ('USERENV', 'NLS_DATE_LANGUAGE') nls_date_language,
SYS_CONTEXT ('USERENV', 'NLS_SORT') nls_sort,
SYS_CONTEXT ('USERENV', 'CURRENT_USER') current_user,
SYS_CONTEXT ('USERENV', 'CURRENT_USERID') current_userid,
SYS_CONTEXT ('USERENV', 'SESSION_USER') session_user,
SYS_CONTEXT ('USERENV', 'SESSION_USERID') session_userid,
SYS_CONTEXT ('USERENV', 'PROXY_USER') proxy_user,
SYS_CONTEXT ('USERENV', 'PROXY_USERID') proxy_userid,
SYS_CONTEXT ('USERENV', 'DB_DOMAIN') db_domain,
SYS_CONTEXT ('USERENV', 'DB_NAME') db_name,
SYS_CONTEXT ('USERENV', 'HOST') HOST,
SYS_CONTEXT ('USERENV', 'OS_USER') os_user,
SYS_CONTEXT ('USERENV', 'EXTERNAL_NAME') external_name,
SYS_CONTEXT ('USERENV', 'IP_ADDRESS') ip_address,
SYS_CONTEXT ('USERENV', 'NETWORK_PROTOCOL') network_protocol,
SYS_CONTEXT ('USERENV', 'BG_JOB_ID') bg_job_id,
SYS_CONTEXT ('USERENV', 'FG_JOB_ID') fg_job_id,
SYS_CONTEXT ('USERENV', 'AUTHENTICATION_TYPE') authentication_type,
SYS_CONTEXT ('USERENV', 'AUTHENTICATION_DATA') authentication_data
FROM DUAL;
4、创建自定义上下文–CREATE CONTEXT
SQL> create context test using set_test_context;
Context created.
SQL> create or replace procedure set_test_context(value in varchar2) is
2 begin
3 dbms_session.set_context('test','key',value);
4 end set_test_context;
5 /
Procedure created.
SQL> exec set_test_context('This is a context set value!');
PL/SQL procedure successfully completed.
SQL> select sys_context('test','key') show_value from dual;
SHOW_VALUE
-------------------------------------------------------------------
This is a context set value!
更多信息请参考:
SYS_CONTEXT
http://docs.oracle.com/cd/B19306_01/server.102/b14200/functions165.htm
CREATE CONTEXT
http://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_5002.htm#i2060927
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 张高兴的大模型开发实战:(一)使用 Selenium 进行网页爬虫
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构