いつもお世話になっております。
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で質問しましょう!
似たような質問が見つかりました
- PHP 重複を防ぐ記述について教えて下さい。 3 2023/04/03 14:35
- その他(プログラミング・Web制作) pythonのグローバル変数 2 2022/11/25 18:02
- モニター・ディスプレイ 「.cur」のアイコン表示について 4 2023/03/04 10:21
- 査定・売却・下取り(車) 廃車手続きに詳しい方、教えてください 2 2022/11/28 09:12
- MySQL SQLで日付別のIDを生成するには 3 2022/10/09 10:34
- C言語・C++・C# 略語の読み方について 2 2023/05/25 12:35
- MySQL 次の時間帯の勝率の合計を求めるSQL文 1 2023/07/04 17:12
- 経営情報システム accessでの請求管理について 12 2022/06/11 16:20
- Access(アクセス) access,vbaでフォルダ内のファイルをテーブルにインポート、ファイル名もフィールドに追加したい 1 2022/08/31 11:11
- その他(買い物・ショッピング) JANコードの登録について 1 2022/07/23 14:19
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Texの枠囲み調節
-
エクセルVBAでUserFormを起動し...
-
或るプロシージャの呼び出し元判定
-
VBA プロシージャの名前の取得
-
Accessでグローバル変数を宣言...
-
sp_executesqlを実行してもテー...
-
ストアド実行時のエラー「参照...
-
to_date使用時に発生するエラー...
-
SQL*Loaderでのsysdate使用
-
テーブルの主キーをdate型...
-
日付書式に変換でこまっています!
-
wordで文字の上に線を引きたい...
-
関数IFで、指定日付範囲のデー...
-
特定の日付が第何週目にあるか...
-
ACCESS2007インポート時の空白...
-
今日の日付が入った行のデータ...
-
OutlookVBAで作成したマクロに...
-
Accessのマクロでモジュールを...
-
キャッシュを使わずにSELECTを...
-
別のスキーマのテーブルアップ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
PL/SQLカーソルの2重FORループ...
-
PL/SQLでのSQL文法
-
Texの枠囲み調節
-
カーソル定義での条件分岐
-
自動連番でカラムを更新したい
-
ORA-00904:無効な識別子の回避...
-
PL/SQLのOPEN cursor_name FOR...
-
カーソルフェッチにて、最終レ...
-
文字列の置換
-
T-SQLのカーソルで
-
[Oracle9i]PL/SQLでFETCHしても...
-
PL/SQL カーソルのFROM句にカー...
-
PL/SQLでの参照
-
PL/SQLにて、マスタから取得し...
-
カーソルで集合関数を使った場...
-
カーソルループ内部でログを出力
-
【PL/SQL】LOOPした動的SQLにて...
-
PL/SQLのカーソルについて
-
PL/SQLでカーソルを指定する方法
-
ROW_NUMBER BY PL/SQL
おすすめ情報