Insertの質問
いつもお世話になっております。
Oracle11gとC#.NETで開発している初心者です。
ストアドプロシージャによるテーブルからテーブルへの
インサートがうまくいかず悪戦苦闘しております。
下記の様な記述をしており、コンパイルは通ったのですが、
D売上見通台帳のIDをプライマリーキーにしており、
実際.NETで動かしてみると、一意制約違反でエラーとなって
しまいます。
どなたかご親切な方ご教授頂きたく、
宜しくお願い申し上げます。
記
create or replace
procedure dbInsert台帳追加
(
out_val out pls_integer
)
as
cursor cur is
SELECT 注文主,受注NO,売上日,品番,品名,数量,
登録日時,登録者
FROM D売上台帳
WHERE 売上日 = TO_CHAR(sysdate,'YYYY/MM/DD')
;
cur_rec cur%rowtype;
begin
open cur;
loop
fetch cur into cur_rec;
exit when cur%notfound;
INSERT INTO D売上見通台帳
(
ID,注文主,受注NO,売上日,品番,品名,数量,
登録日時,登録者,更新日時,更新者
)
VALUES
(
seqD売上台帳ID.nextval,cur_rec.注文主,cur_rec.受注NO,cur_rec.品番,cur_rec.品名,
cur_rec.数量,cur_rec.登録日時,cur_rec.登録者,cur_rec.更新日時,cur_rec.更新者
)
;
end loop;
close cur;
out_val := sql%rowcount;
end;
お礼
それが出来れば楽なんですよね。 条件の分岐が4つありまして… もちろん最初はそれでやろうと思ってたんですけど、 IF あ なんたらかんたら END IF IF い なんたらかんたら END IF INSERT とか考えてました…。 でもこれ(SQL文の中にIF文入れる)ができるのってACCESS特有ですよね。 今までほとんどACCESSでOracleあんまりやったことなくって。 というわけで、 BEGIN FOR rec カーソル1LOOP IF カーソル1の条件だったら PROCEDURE 項目追加(rec) END IF END LOOP ・・・2 ・・・3 ・・・4 END PG としたら楽だなぁと思ったんです。 それに、参照元のテーブルが2つで、 INSERTするテーブルが85項目あるので少しでも楽したいと思って><。 アドバイスありがと~です。