民间,
我有一个现有的存储过程,我试图将其更新为始终显示两位小数,即使它是整数还是一个小数。
此存储过程建立了一条消息,必须显示 v_credit_amt为两个十进制数,但是分配给v_credit_amt它的值可以是整数或单个十进制或两个十进制值,即175应该显示为175.00,250.5应该显示为250.50,395.95应该显示为395.95。
这是相关的库存pl / sql
v_credit_amt number(22,2);
select NVL(sit_credit_limit,0)
into v_credit_amt
from sites
where sit_pkey = p_site_id;
Run Code Online (Sandbox Code Playgroud)
我认为在选择过程中通过to_char格式化会解决这个问题,
select NVL(to_char(sit_credit_limit, 'fm99999.00'),0)
into v_credit_amt
from sites
where sit_pkey = p_site_id;
--v_credit_amt := to_char(v_credit_amt, 'fm99999.00');
insert into SQL_TXT values (v_credit_amt);
commit;
Run Code Online (Sandbox Code Playgroud)
从上面的注释行中可以看到,定义了v_credit_amt变量后,我也尝试过
我也尝试过to_number函数
select NVL(to_number(sit_credit_limit, '99999.00'),0)
into v_credit_amt
from sites
where sit_pkey = p_site_id;
Run Code Online (Sandbox Code Playgroud)
但是,如果存储在sit_credit_limit列中的值是不带小数的整数,或者v_credit_amt在查询要插入的SQL_TXT表时,在所有情况下类似250.5的数字在所有情况下都表示相同。
SQL> select * from SQL_TXT;
COL1
--------------------------------------------------------------------------------
175
250.5
Run Code Online (Sandbox Code Playgroud)
这个特定事件只是将多个消息部分串联成一个单个的长消息字符串,即返回
if p_message_id = '14' then
v_message := 'Comtrol Check In …Run Code Online (Sandbox Code Playgroud)