2016-05-15 3 views
0

forename、lastname、ageを10桁で出力する匿名PL/SQLコードの作成に問題があります(sysdateの代わりに01-SEP-04 ddmonyyyyを使用)テーブル。私が問題を抱えている部分は年齢です。これは私がこれまでに作ってみたものです:テーブルからのPLSQL計算とmonth_between

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; 

私が手出力に含まはこれです:

マーティン、VARG、55.4歳
ケニー、グリーン、50.6歳
トニー、 39歳Zawicki、
33.3歳Shawon、ハッサン、
35.4歳サデック、Nowicki、
45.3歳ジェーン・ロバーツ、
テリー、Mcfield、43.4歳
を探して何イムマリス、Vanzi、23.4歳

はこの1つのように出力されます:

マーティン、VARG、55,6歳
ケニー、グリーン、50,7年古い
トニー、Zawicki、39,1歳
Shawon、ハッサン、33,4歳
サデック、Nowicki、35,6歳
ジェーン・ロバーツ、4S、5R歳
TERR 43,6歳のy、Mcfield、
私はコンマと右の小数点以下を必要とする

注...すべてのアドバイスを

感謝と23.5歳マリス、Vanzi、助けて!

+0

はどのようにして50.7に55.6から55.4または50.6から行くのですか?これは単なる小数点の置き換えではありません。 –

答えて

0

国際化を使用して、小数点をcommmaに設定できます。マニュアルでhereを開始してください。

しかし、一回限りのソリューションのため、私はちょうどでageに代わる:

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

これはうまくいくが、最初に小数点以下の桁までceil()を行う必要がある。 –

関連する問題