PL/SQL文を使用して、年齢を判定するファンクションを作成しています。
empテーブルの「生年月日」カラムをもとに、employeeの年齢を判定することを目指しています。下記のファンクションを作成することはできましたが、実行時にエラーが起こります。
SQL
1CREATE OR REPLACE FUNCTION AGE 2(v_date in date 3) 4RETURN number 5is 6age number(20) ; 7begin 8SELECT 9TRUNC(( TO_CHAR(SYSDATE, 'YYYYMMDD') - TO_CHAR(TO_DATE(v_date, 'YYYY/MM/DD'), 'YYYYMMDD'))/10000) 10into age 11from emp; 12return age; 13end; 14/ 15
SQL
1select AGE(生年月日) 2from emp;
error
1: ORA-01830: 日付書式の変換で不要なデータが含まれています 2ORA-06512: AGE, 行8 3
=======================
以下、SQLの実行モードの変更により解決しました。
下記のコードを実行しようとすると、下記のエラーメッセージが表示されます。該当するエラーメッセージを調べても原因がわかりませんでしたので、質問いたします。
error
1SQL : ORA-24344: success with compilation error
SQL
1CREATE OR REPLACE FUNCTION AGE RETURN number 2is 3age number(3) as 年齢; 4begin 5SELECT 6TRUNC((TO_CHAR(TO_DATE(sysdate, 'YYYY/MM/DD'), 'YYYYMMDD') - TO_CHAR(TO_DATE(生年月日, 'YYYY/MM/DD'), 'YYYYMMDD'))/10000) 7into 年齢 8from emp; 9return age; 10end; 11
回答2件
あなたの回答
tips
プレビュー