
はじめまして。
Oracle11gで開発しています。
初歩の初歩の質問なのですが。
下記のように複数のレコードをまとめて、
INSERT先のテーブル(レコードを1個に)に入れ込むまでの処理です。
全てNUMBER型のテーブル列で、NOT NULL制御を施しています。
そのようにすれば、明示的にNULLは無くなり、「0」がデフォルトになると思ったのですが、
「tb_trn_aa_day_r.tx_00」はNULLのままでした。
初期化の「tb_trn_aa_day_r := null;」がまずいのでしょうか?
ちなみに、tb_trn_aa_day_r.tx_00~tx_23に「0」をセットしてもなぜか、NULLとなり、
「tb_trn_aa_day_r.tx_sum」が全てNULLとなってしまいます。
初期j化はどのようにすべきでしょうか?
よろしくお願いします。
/* Aデータ初期化 */
tb_trn_aa_day_r := null;
IF c_aa_data_r.hour = '00' THEN
tb_trn_aa_day_r.tx_00 := TO_NUMBER2(c_aa_data_r.tx);
ELSIF c_aa_data_r.hour = '01' THEN
tb_trn_aa_day_r.tx_01 := TO_NUMBER2(c_aa_data_r.tx);
ELSIF c_aa_data_r.hour = '02' THEN
tb_trn_aa_day_r.tx_02 := TO_NUMBER2(c_aa_data_r.tx);
ELSIF c_aa_data_r.hour = '03' THEN
tb_trn_aa_day_r.tx_03 := TO_NUMBER2(c_aa_data_r.tx);
.....
ELSIF c_aa_data_r.hour = '23' THEN
tb_trn_aa_day_r.tx_23 := TO_NUMBER2(c_aa_data_r.tx);
END IF;
dbms_output.put_line(tb_trn_aa_day_r.tx_00);
/* 集計データ */
tb_trn_aa_day_r.tx_sum := TO_NUMBER2(tb_trn_aa_day_r.tx_sum) + TO_NUMBER2(c_aa_data_r.tx);
/* INSERT処理 */
CREATE OR REPLACE function SYNONIM.TO_NUMBER2(str varchar2) return number
is
begin
return to_number(str);
exception when others then
dbms_output.put_line('TO_NUMBER2 error: ' || SQLERRM);
return 0;
end;
/
No.1ベストアンサー
- 回答日時:
tb_trn_aa_day_r の定義が分からないと、正しい回答は出来ないような気がします・・・
>全てNUMBER型のテーブル列で、NOT NULL制御を施しています。
とありますが、仮に tb_trn_aa_day_r が、テーブル%ROWTYPE だとしても各カラムの制約は引き継がれません。
そこを勘違いされているのかもしれません。
また、
>ちなみに、tb_trn_aa_day_r.tx_00~tx_23に「0」をセットしても
とありますが、これはどのようにセットして確認したのでしょうか?
TO_NUMBER2ですが、strにどんな値が来たときにexceptionブロックに飛ぶことを期待していますか?
空文字やNULLの場合は、exceptionは発生しないのでNULLが返りますよ。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Formulaプロパティーを使ってセルに数式を組んだのですが簡潔にしたい。 3 2022/08/21 20:51
- 英語 "not to worry"の元の表現等について 1 2023/06/22 14:44
- Excel(エクセル) 週毎の集計 2 2023/08/04 16:56
- その他(プログラミング・Web制作) pythonのmap、結果の利用は1度だけ? 5 2022/06/11 12:33
- 電車・路線・地下鉄 TX-1000系 TX-2000系 TX-3000系 1 2022/09/19 14:06
- Excel(エクセル) EXCEL 行固定列移動 3 2022/04/04 09:27
- Visual Basic(VBA) Excel VBAでAA(BBB) → BBB.AA に置換したい 2 2022/10/30 13:59
- お酒・アルコール 断酒団体AAについての質問です 今年に入ってからお酒をやめました 自助グループとして「断酒会」と「A 3 2023/05/22 11:39
- タブレット リカバリ用のUSBメモリ。 6 2022/10/24 15:19
- Visual Basic(VBA) 今日の日付が過ぎたらその行を削除したい 1 2023/04/01 20:06
このQ&Aを見た人はこんなQ&Aも見ています
-
【お題】大変な警告
【大喜利】「今このパソコンは大変危険な状態です」という警告メッセージを無視してパソコンを開いたら、こんなことが起こった
-
スマホに会話を聞かれているな!?と思ったことありますか?
スマートフォンで検索はしてないのに、友達と話していた製品の広告が直後に出てきたりすることってありませんか? こんな感じでスマホに会話を聞かれているかも!?と思ったエピソードってありますか?
-
みんなの【マイ・ベスト積読2024】を教えてください。
積読、ついついしちゃいませんか?そこでみなさんの 「2024年に買ったベスト積読」を聞きたいです。
-
テレビやラジオに出たことがある人、いますか?
テレビやラジオに取材されたり、ゲスト出演したことある方いますか?
-
一番好きなみそ汁の具材は?
みんなで大好きなみそ汁の具材について語り合おうよっ!
-
CLOB型へのINSERT
Oracle
-
PL/SQL PLS-00103エラーについて
Oracle
-
変数が選択リストにありません
Oracle
-
-
4
カーソル0件の時にエラーを発生させる
Oracle
-
5
PL/SQLでログを確認したい。
Oracle
-
6
異なるスキーマからデータを抽出するには?oracl、PL/SQL
Oracle
-
7
SQLローダーCSV取込で、囲み文字がデータ中に入っている場合について
Oracle
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・「これはヤバかったな」という遅刻エピソード
- ・初めて自分の家と他人の家が違う、と意識した時
- ・いちばん失敗した人決定戦
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SQL、2つのテーブルで条件一致...
-
テーブル名をカラムとして取得...
-
sqlplusで表示が変なので、出力...
-
update文で改行を入れる
-
ROWNUMでUPDATEをしたいのです...
-
SQL*LoaderでCSVから指定した列...
-
SQLでSUMなどの関数でデータが...
-
特定のカラムが更新されたとき...
-
SQL 複数テーブルのupdate
-
半角英数文字の抽出がしたい。
-
UPDATE文
-
DBからタブ区切りのCSVデータを...
-
Viewのカラムの長さが不明?
-
Oracleのview、synonymをCOMPIL...
-
SQLでデータを1件だけ取得した...
-
descでdefault値やキーなどを表...
-
件数とデータを同時に取得する...
-
日付の古い順番に削除したいの...
-
OracleのSQLで同テーブルのカラ...
-
PLSQLのNumber型の初期化
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SQL、2つのテーブルで条件一致...
-
テーブル名をカラムとして取得...
-
SQL*LoaderでCSVから指定した列...
-
update文で改行を入れる
-
sqlplusで表示が変なので、出力...
-
ROWNUMでUPDATEをしたいのです...
-
SQLでSUMなどの関数でデータが...
-
SQL 複数テーブルのupdate
-
カラム位置変更
-
特定のカラムが更新されたとき...
-
テーブルやカラムの物理名のネ...
-
件数とデータを同時に取得する...
-
数値をNUMBER型にするかCHAR型...
-
LONG型の先頭250バイトを Varch...
-
UPDATE文
-
DBからタブ区切りのCSVデータを...
-
Viewのカラムの長さが不明?
-
SQL(oracle)でご助言いただきた...
-
SQLで違うテーブルの値を比較し...
-
distinct をexistsに変換する
おすすめ情報