私は、ユーザーに生年月日を尋ねて年齢を計算する単純な PL/SQL ブロックに取り組んでいます。12 の変換で割った months_between を使用しましたが、置換変数の日付変換とユーザーからの日付入力に問題があります。v_birthday_year は、後で統合する必要があるコードの別の部分であるため、無視してください。
ユーザーが入力しなければならない形式、つまり 05-07-1980 または 06 Mar 1978 が受け入れられるかどうか、および入力したものから年齢を計算する方法がわかりません。
私の希望するプログラムは、ユーザーの生年月日をこの形式の DD-MON-YYYY で受け入れる PL/SQL プログラムを作成し、年齢を小数点以下 1 桁で計算することです。したがって、小数点以下1桁まで計算する必要があります。
これが私が持っているものですが、置換変数の入力でDOBに入力する形式と、小数点以下1桁の実際の計算がわかりません。どこが間違っているのか、それを修正する方法を見つけようとしているだけです。
SET SERVEROUTPUT ON
DECLARE
--v_birthday_year NUMBER(4) := &v_birthday_year;
v_dob DATE := &v_dob
v_your_age NUMBER(3, 1);
BEGIN
v_your_age := TRUNC(MONTHS_BETWEEN(SYSDATE, v_dob))/12;
DBMS_OUTPUT.PUT_LINE ('Your age is ' || v_your_age);
END;
/