我有一个光标,它从包含浮点数的 NUMBER 类型的列中选择日期。像 4,3433 这样的数字会正确返回,而小于 1 的数字会删除前导零。
例如,数字 0,4513 返回为 ,4513。
当我在数据库的游标中执行 select 时,数字格式正确,前导零。
这就是我循环游标返回的记录的方式:
FOR c_data IN cursor_name(p_date) LOOP
...
END LOOP;
任何想法为什么它会这样工作?
先感谢您。
这是 Oracle 提供的默认数字格式。如果你想指定一些自定义的东西,你应该使用 TO_CHAR 函数(在 SQL 查询或循环内的 PL/SQL 代码中)。
下面是它的工作原理:
SQL>
SQL> WITH aa AS (
2 select 1.3232 NUM from dual UNION ALL
3 select 1.3232 NUM from dual UNION ALL
4 select 332.323 NUM from dual UNION ALL
5 select 0.3232 NUM from dual
6 )
7 select NUM, to_char(NUM, 'FM999990D9999999') FORMATTED from aa
8 /
NUM FORMATTED
---------- ---------------
1.3232 1.3232
1.3232 1.3232
332.323 332.323
.3232 0.3232
SQL>
在此示例中,“FM” - 抑制额外的空白,“0”表示包含前导/尾随零的数字,“9”表示抑制前导/尾随零的数字。
你可以在这里找到很多例子:http: //docs.oracle.com/cd/B19306_01/server.102/b14200/sql_elements004.htm#i34570