概要
・OracleのSELECT INSERTでファンクションの戻り値をセットしたい
問題点
・現在はファンクションの戻り値だけがNULLになってしまう
・INSERTをコメントして、SELECTだけだと戻り値が取得でる
・この場合ループで都度INSERTではなく、1度だけのINSERTはできないのでしょうか?
ご教授願います。
ファンクション
・社員番号をもとに基本給を2倍した値を返す
環境
・Oracle11g
SELECT文
html
1SELECT 2 EMP_NO 3 ,EMP_NAME 4 ,F_GET_BONUS(EMP_NO) AS BONUS -- ファンクション 5 ,'2019/12/10' AS SUPPLY_DAY 6FROM EMP_TBL 7WHERE EMP_NO IN ( 8 SELECT EMP_NO FROM TARGET_TBL 9 WHERE POSITION=1 10); 11
※社員ごとにボーナス(BONUS)が取得できます
SELECT INSERT
html
1INSERT INTO EMP_TBL 2SELECT 3 EMP_NO 4 ,EMP_NAME 5 ,F_GET_BONUS(EMP_NO) AS BONUS -- ファンクション 6 ,'2019/12/10' AS SUPPLY_DAY 7FROM EMP_TBL 8WHERE EMP_NO IN ( 9 SELECT EMP_NO FROM TARGET_TBL 10 WHERE POSITION=1 11);
※ORA-01400: BONUSにNULLは挿入できません。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。