2015-08-20 158 views
0

我試圖在KPI_DEFINITION表中插入一個值,並且我收到錯誤信息ORA-01722: invalid number。錯誤是KPI_FREQUENCY字段,其​​中NUMBER數據類型,它試圖插入值'0,5'。我認爲數字數據類型允許整數以及浮點值。但它仍然給出一個錯誤。ORA-01722:在oracle中Number數據類型的無效號碼

Insert into RATOR_MONITORING_CONFIGURATION.KPI_DEFINITION (KPI_DEF_ID,KPI_NAME,KPI_DESC,KPI_FREQUENCY) values ('10003881','Backlog Resul11t','Backlog Result11','0,5'); 

回答

2

在SQL值是使用單引號指定

此外:使用小數點分隔數字.不是逗號。所以,你需要寫爲:

Insert into RATOR_MONITORING_CONFIGURATION.KPI_DEFINITION 
    (KPI_DEF_ID,KPI_NAME,KPI_DESC,KPI_FREQUENCY) 
values 
    ('10003881','Backlog Resul11t','Backlog Result11', 0.5); 
                ^
                 Here 

如果KPI_DEF_ID也是數列,刪除單引號該值,以及:

對於一個完整的文檔上如何指定數字或字符串文字,請參閱手冊:

https://docs.oracle.com/database/121/SQLRF/sql_elements003.htm#i139891

+0

其實我已經從sql開發者生成了這個腳本。它以'0,5'這種方式產生。但是因爲我們有FLOAT,所以oracle中的DECIMAL數據類型爲什麼它在數字數據類型中允許十進制值 – Andrew

+2

@Rahul:'decimal'是'number(x,y)'的別名。有關詳細信息,請參閱手冊:https://docs.oracle.com/database/121/SQLRF/sql_elements001.htm#CHDHDHGB –

+2

@Rahul - 然後您需要查看如何生成腳本。也許你正在獲得一個現有的值並使用'to_char()',NLS設置給你一個小數點分隔符的逗號;然後用引號括起來?如果是這樣,你需要失去引號,並強制它使用'.'作爲小數點分隔符 - 所以它的產生如本答案中所示。 –

2

可能的數據類型爲KPI_FREQUENCY你的情況是number(2,1)
修改你的insert聲明

Insert into RATOR_MONITORING_CONFIGURATION.KPI_DEFINITION (KPI_DEF_ID,KPI_NAME,KPI_DESC,KPI_FREQUENCY) 
    values ('10003881','Backlog Resul11t','Backlog Result11',0.5); 
+0

無需更改插入查詢 –

+3

@MaulikShah:當然插入必須更改。 「'0,5'不是有效的數字字面量。 –

+0

哦,是的。我的小姐。 –

相關問題