来自 table 的 PLSQL 计算和 month_between

PLSQL calculation and month_between from a table

我在创建匿名 PL/SQL 代码时遇到问题,该代码应该从 table。我遇到问题的部分是年龄。这是我到目前为止想出的:

set serveroutput on

 declare cursor
  car_owner is select firstN, lastN, trunc(months_between(date '2004-09-01', to_date('19' || substr(pnr, 1,6), 'yyyymmdd')))/12
from carowners;

b_first carowners.firstN%type;
b_last carowners.lastN%type;
age number (3,1);

begin
 if not car_owner%isopen
  then open car_owner;
 end if;

loop 
 fetch car_owner into b_first, b_last, age;

exit when car_owner%notfound;

dbms_output.put_line (initcap(b_first || ', ' || b_last) || ', ' || age ||' years old');

       end loop;
       close car_owner;

end;

我得到的输出是这样的:

瓦尔格马丁,55.4 岁
肯尼,格林,50.6 岁
Tony, Zawicki, 39 岁
Shawon, Hassan, 33.3 岁
诺维奇萨德克,35.4岁
简·罗伯茨,45.3 岁
特里·麦克菲尔德,43.4 岁
Malice, Vanzi, 23.4岁

我要找的是这样的输出:

Martin, Varg, 55,6 岁
肯尼,格林,50,7 岁
Tony, Zawicki, 39,1岁
Shawon, Hassan, 33,4岁
Sadek, Nowicki, 35,6岁
简·罗伯茨,45,5 岁
特里·麦克菲尔德,43,6 岁
Malice, Vanzi, 23,5岁

注意我需要一个逗号和正确的小数...

感谢所有的建议和帮助!

您可以使用国际化将小数点设置为逗号。在文档中开始here

但是,对于一次性解决方案,我只需将 age 替换为:

trim(replace(to_char(age, '999.9'), '.', ','))