用于插入浮点值的oracle sql十进制分隔符

时间:2016-07-18 12:45:18

标签: c# sql oracle floating-point implicit-conversion

我在C#中编写了一个Web服务,它获取了一个JSON-String,反序列化并在Oracle SQL数据库中进行了异步。因此,我创建传递给数据库的SQL语句。我选择了这种方式,因为我需要一个动态解决方案,因为查询会根据发送的数据而变化。到目前为止这个工作正常,只是为了更好地理解我的问题。我的Web服务提供了以下输出:

Merge into SYSTEM.TEST 
USING Dual  
ON (AREA = 'North' and ACTUAL = '10000') 
WHEN MATCHED THEN UPDATE  
SET INSERTUSER = 'Server\\Name',
INSERTTIMESTAMP = '18.07.2016 12:40:10',
BUDGET = '123',
BUDGET2 = '12',
BUDGET3 = '123',
BUDGET4 = '18.03' 
WHEN NOT MATCHED THEN 
INSERT
(AREA,ACTUAL,INSERTUSER,INSERTTIMESTAMP,BUDGET,BUDGET2,BUDGET3,BUDGET4) 
VALUES 
('North','10000','Server\\name','18.07.2016 12:40:10','123','12','123','18.03');

如果我尝试此查询,则会收到以下错误:

SQL-Fehler: ORA-01722: invalid number
01722. 00000 -  "invalid number"
*Cause:    The specified number was invalid.
*Action:   Specify a valid number.

生成
BUDGET4 = '18.03' 

如果我将小数点分隔符从点(。)更改为逗号(,),一切正常,oracle执行隐式类型转换并插入/更新行。但我不想手动执行此操作,因为在我看来,使用点作为小数分隔符存储浮点值更好(甚至是约定)。

有没有办法告诉Database-Systeme接受此查询/执行隐式类型转换?

我已经尝试使用ALTER SESSION SET NLS_NUMERIC_CHARACTERS = '. ' ; 但它没有帮助。

先谢谢。

0 个答案:

没有答案