要在oracle中更改十进制数的组分隔符,请使用
ALTER SESSION SET NLS_NUMERIC_CHARACTERS = '.,';
但是ALTER SESSION
意味着这仅适用于当前连接。我只尝试SET NLS_NUMERIC_CHARACTERS = '.,';
但没有效果,ALTER SYSTEM
也没有效果
所以问题是:如何为每个会话设置NLS_NUMERIC_CHARACTERS?
感谢。
答案 0 :(得分:1)
最佳方法可能取决于您如何插入数据 - 无论是通过SQL * Plus插入语句,SQL * Loader,外部表还是其他内容。
如果您使用的是SQL * Plus,则可以在登录时自动发出alter session
命令,仅限user profile或site 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_CHARACTERS。 following list显示了可在哪个级别修改的内容。