質問編集履歴

1

エラーを追加しました。

2022/07/28 03:08

投稿

sinzuku123321
sinzuku123321

スコア3

test CHANGED
File without changes
test CHANGED
@@ -1,5 +1,36 @@
1
1
  PL/SQL文を使用して、年齢を判定するファンクションを作成しています。
2
- empテーブルの「生年月日」カラムをもとに、employeeの年齢を判定することを目指しています。
2
+ empテーブルの「生年月日」カラムをもとに、employeeの年齢を判定することを目指しています。下記のファンクションを作成することはできましたが、実行時にエラーが起こります。
3
+
4
+ ```SQL
5
+ CREATE OR REPLACE FUNCTION AGE
6
+ (v_date in date
7
+ )
8
+ RETURN number
9
+ is
10
+ age number(20) ;
11
+ begin
12
+ SELECT
13
+ TRUNC(( TO_CHAR(SYSDATE, 'YYYYMMDD') - TO_CHAR(TO_DATE(v_date, 'YYYY/MM/DD'), 'YYYYMMDD'))/10000)
14
+ into age
15
+ from emp;
16
+ return age;
17
+ end;
18
+ /
19
+
20
+ ```
21
+ ```SQL
22
+ select AGE(生年月日)
23
+ from emp;
24
+ ```
25
+ ```error
26
+ : ORA-01830: 日付書式の変換で不要なデータが含まれています
27
+ ORA-06512: AGE, 行8
28
+
29
+ ```
30
+
31
+ =======================
32
+ 以下、SQLの実行モードの変更により解決しました。
33
+
3
34
 
4
35
  下記のコードを実行しようとすると、下記のエラーメッセージが表示されます。該当するエラーメッセージを調べても原因がわかりませんでしたので、質問いたします。
5
36