是否可以在oracle中为每个会话设置十进制数的组分隔符?

时间:2012-03-01 11:05:52

标签: sql oracle

要在oracle中更改十进制数的组分隔符,请使用

ALTER SESSION SET NLS_NUMERIC_CHARACTERS = '.,';

但是ALTER SESSION意味着这仅适用于当前连接。我只尝试SET NLS_NUMERIC_CHARACTERS = '.,';但没有效果,ALTER SYSTEM也没有效果 所以问题是:如何为每个会话设置NLS_NUMERIC_CHARACTERS?

感谢。

2 个答案:

答案 0 :(得分:1)

最佳方法可能取决于您如何插入数据 - 无论是通过SQL * Plus插入语句,SQL * Loader,外部表还是其他内容。

如果您使用的是SQL * Plus,则可以在登录时自动发出alter session命令,仅限user profilesite profile

如果您正在执行大量单独的插入语句并且已经使用to_number,那么可以使用third parameter,它允许您基于每个命令设置NLS参数。这听起来像是一种痛苦的方式来“插入大量数据”,并修改现有的语句可能不会太有趣,因为如果没有一个存在,你还必须添加格式掩码。

或者,您可以在您的环境中设置NLS参数;例如您可以设置具有所需NLS_NUMERIC_CHARACTERS设置的NLS_LANG。这可能是最好的,并且如果您使用SQL * Loader加载数据将适用;虽然我怀疑你不是,但无论如何你都可以在控制文件中使用to_number

有些客户有其他方法来设定;例如,SQL Developer在其首选项中有一个Database-> NLS部分。

关于NLS内容的更多内容here

答案 1 :(得分:0)

似乎可以通过实例级别的init param文件设置NLS_NUMERIC_CHARACTERSfollowing list显示了可在哪个级别修改的内容。