いつもお世話になっております。
Oracle11gとC#.NETで開発している初心者です。
ストアドプロシージャによるテーブルからテーブルへの
インサートがうまくいかず悪戦苦闘しております。
下記の様な記述をしており、コンパイルは通ったのですが、
D売上見通台帳のIDをプライマリーキーにしており、
実際.NETで動かしてみると、一意制約違反でエラーとなって
しまいます。
どなたかご親切な方ご教授頂きたく、
宜しくお願い申し上げます。
記
create or replace
procedure dbInsert台帳追加
(
out_valoutpls_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;
No.3ベストアンサー
- 回答日時:
どうしても今のストアドプロシジャでしたいなら、
seqD売上台帳 number;
と定義して、
fetch cur into cur_rec;
exit when cur%notfound;
の次に
select seqD売上台帳ID.nextval into seqD売上台帳 from dual ;
を実行して、
INSERT INTO D売上見通台帳
(
ID,注文主,受注NO,売上日,品番,品名,数量,
登録日時,登録者,更新日時,更新者
)
VALUES
(
seqD売上台帳,cur_rec.注文主,cur_rec.受注NO,cur_rec.品番,cur_rec.品名,
cur_rec.数量,cur_rec.登録日時,cur_rec.登録者,cur_rec.更新日時,cur_rec.更新者
)
;
としてください。
No.4
- 回答日時:
回答は既に出ていますので、プログラムの記述方法についてです。
このようなカーソルループであれば for loop文の方が楽に書けますよ。
ご参考まで。
http://download.oracle.com/docs/cd/E16338_01/app …
No.2
- 回答日時:
なぜストアドプロシジャで実行するのでしょうかね。
INSERT INTO D売上見通台帳
(
ID,注文主,受注NO,売上日,品番,品名,数量,
登録日時,登録者,更新日時,更新者
)
SELECT seqD売上台帳ID.nextval,
注文主,受注NO,売上日,品番,品名,数量,
登録日時,登録者
FROM D売上台帳
WHERE 売上日 = TO_CHAR(sysdate,'YYYY/MM/DD')
;
ってやればいいのでは。
そもそも、seqD売上台帳ID.nextvalはselectしないと番号が進みません。
単にinsetのvalue句の中でseqD売上台帳ID.nextvalと書いてもカウントアップされないです。
No.1
- 回答日時:
seqD売上台帳ID.nextvalで取得される値が現在のD売上見通台帳のIDで存在する値が取得されるため、エラーになっているのではないですか?
seqD売上台帳IDのシーケンス値を別途、D売上見通台帳の最大IDより大きくする必要があると思われます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Texの枠囲み調節
-
PL/SQLでのSQL文法
-
カーソルフェッチにて、最終レ...
-
PL/SQLカーソルの2重FORループ...
-
Accessのマクロでモジュールを...
-
今日の日付が入った行のデータ...
-
SSIS 変数の値をSQL実行タスク...
-
キャッシュを使わずにSELECTを...
-
Statement ignored というエラー
-
Access VBAで行ラベルが定義さ...
-
会社の〇〇部と〇〇課の違いっ...
-
日付型なら変数の先頭になん...
-
SQLserver算術オーバーフロ...
-
DB2のSELECTでカンマ編集につい...
-
百の位での四捨五入について
-
ExcelのSUMPRODUCTで日付の範囲...
-
sqlplusでヘッダーが付かない
-
access adoのトランザクション
-
ストアドプロシージャからアナ...
-
テーブルの主キーをdate型...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
PL/SQLカーソルの2重FORループ...
-
PL/SQLでのSQL文法
-
Texの枠囲み調節
-
カーソル定義での条件分岐
-
自動連番でカラムを更新したい
-
ORA-00904:無効な識別子の回避...
-
カーソルフェッチにて、最終レ...
-
【PL/SQL】LOOPした動的SQLにて...
-
ROW_NUMBER BY PL/SQL
-
【PL/SQL】CURSOR ・・・ IS SE...
-
[Oracle9i]PL/SQLでFETCHしても...
-
PL/SQL カーソルのFROM句にカー...
-
minipage??
-
MYSQL ストアドプロシージャの...
-
カーソルループ内部でログを出力
-
mysqlのcase文で複数の条件を指...
-
PL/SQLのカーソルについて
-
T-SQLのカーソルで
-
Accessのマクロでモジュールを...
-
Access VBAで行ラベルが定義さ...
おすすめ情報