从 SQL*Plus 中设置编码

Álv*_*lez 4 oracle sqlplus oracle-xe

我有一大组带有 SQL 命令的文件,我使用使用该@@运算符的 SQL*Plus 脚本运行这些文件。我在第三方计算机上运行该脚本(甚至通过电子邮件发送),因此我想使其尽可能独立。

文件编码为 Win-1252。目前,我需要NLS_LANG在运行脚本之前设置环境变量:

C:\> SET NLS_LANG=SPANISH_SPAIN.WE8MSWIN1252

C:\> echo exit | sqlplus foo/bar@//example.com/xe @install.sql
Run Code Online (Sandbox Code Playgroud)

这有效,但我想知道是否可以使用 SQL 或 SQL*Plus 命令更改客户端编码。(或者至少读取值并在不匹配时中止执行。)

Phi*_*lᵀᴹ 6

NLS_LANG 不能从会话内部更改,但其他设置可以。

一旦建立了数据库连接(即:的第二部分NLS_LANG),您就无法更改字符集,但您可以使用以下命令更改语言:

alter session set NLS_LANGUAGE=SPANISH
Run Code Online (Sandbox Code Playgroud)

...和领土:

alter session set NLS_TERRITORY=SPAIN
Run Code Online (Sandbox Code Playgroud)