2013-03-11 69 views
1

我正在使用Application Express和Jquery。如果我的字段包含0.5的值,Oracle會將其返回爲0.5而不包含零。這會導致jQuery JSON解析器窒息。獲取apex_util.json_from_sql返回0.5

declare v_sql varchar2(4000); 

begin 
    v_sql := 'select 0.5 xyz from dual'; 
    apex_util.json_from_sql (v_sql); 
end; 

返回:

{"row":[{"XYZ":.5}]} 

我想:

{"row":[{"XYZ":0.5}]} 

是否有某種方式直接json_from_sql放於前導零,如果要求所有十進制字段?

回答

0

我解決了這個做一個字符串替換在客戶端

json = json.replace(/\:\./g, ":0."); 

調用parseJSON

之前
2

據我所知,沒有選項json_from_sql,這足夠令人討厭的仍然沒有在官方文檔中記錄。它可能是在字段上發生隱式的to_char,刪除前導零。
這是在htmldb_util的規範中,並且沒有評論。

procedure json_from_sql (
    sqlq  in varchar2 default null, 
    p_sub in varchar2 default 'N', 
    p_owner in varchar2 default null); 

當您從SQL workshop> SQL命令執行選擇時,零也不會顯示。
我知道這是不是驚心動魄,但你可以考慮把一個TO_CHAR圍繞你的號碼:

v_sql := 'select TO_CHAR(0.5,''FM9990D0'') xyz from dual';