我在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 = '. ' ;
但它没有帮助。
先谢谢。