如何检查客户端的 NLS_LANG?

2022-01-07 00:00:00 character-encoding oracle nls-lang

我正在使用 Windows 操作系统,我知道此设置存储在注册表中.问题是注册表路径随着版本的不同而变化,浏览那一堆注册表项绝对不是一个好主意.

I'm working on Windows OS, I know that this setting is stored in the registry. The problem is that the registry path changes from version to version, browsing though that bunch of registry keys is definitly not a good idea.

我可以通过 SELECT USERENV ('language') FROM DUAL 获取服务器的 NLS_LANG.

I can get the NLS_LANG of the server with SELECT USERENV ('language') FROM DUAL.

我想将它与客户端设置进行比较,并在它们不匹配时显示警告,就像 Pl/Sql Developer 一样.

I'd like to compare that with the client setting and show a warning when they don't match, just like Pl/Sql Developer does.

推荐答案

根据 Jocke 的回答(感谢 Jocke),我测试了以下查询:

According to Jocke's answer (thanks Jocke), I tested the following query:

SELECT DISTINCT client_charset FROM v$session_connect_info
WHERE sid = sys_context('USERENV','SID');

它完美地完成了这项工作,但我不确定是否有任何用户将拥有必要的权限.

It perfectly does the job, but I'm unsure if any user will have the necessary rights.

相关文章