1

我正在使用 Application Express 和 Jquery。如果我的字段包含 0.5 的值,Oracle 将其返回为 0.5,不带零。这会导致 jQuery JSON 解析器阻塞。

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 输入前导零?

4

2 回答 2

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 研讨会 > SQL 命令执行选择时,也不会显示零。
我知道这并不令人兴奋,但您可以考虑在您的数字周围放置一个 to_char:

v_sql := 'select TO_CHAR(0.5,''FM9990D0'') xyz from dual';
于 2013-03-11T11:03:45.920 回答
0

我通过在客户端进行字符串替换解决了这个问题

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

在调用 parseJSON 之前

于 2013-03-11T23:46:10.137 回答