![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
質問をご覧いただきまして有難うございます。
初めてストアドプロシージャを作成しており、サンプルでいろいろと作ってみようと思い、作成コードを実行しようとしたんですが、以下のようなメッセージが表示され、正常に実行できません。
ORA-00001: 一意制約(OES4.PK_SITT_IKO_LOG)に反しています
ORA-06512: "OES2.PRA002",行16
ORA-06512: 行4
以下はストアドです。
CREATE OR REPLACE PROCEDURE PRACTICE001
IS
BEGIN
DECLARE
--ループ
CNT NUMBER;
BEGIN
CNT := 0;
LOOP
EXIT WHEN CNT >= 10;
CNT := CNT + 1;
insert into LOG_TBL values(systimestamp,'test','comments are...');
END LOOP;
END;
END;
テーブル(LOG_TBL)定義は次のようになっています。
LOG_TIME timestamp NOT NULL
COMMENT1 varchar2(20)
COMMENT2 varchar2(200)
タイムスタンプであれば重複もないと思うんですが。。。
原因がよくわからないです。。。
宜しくお願い致します!
No.1ベストアンサー
- 回答日時:
>タイムスタンプであれば重複もないと思うんですが。
。。実際に確認してみればいいじゃないですか。
下は私の環境(Win2Kpro+OracleXE)で試したものです。
SQL> set serveroutput on
SQL> begin
2 for i in 1..10 loop
3 dbms_output.put_line(systimestamp);
4 end loop;
5 end;
6 /
09-11-09 18:43:48.642000000 +09:00
09-11-09 18:43:48.642000000 +09:00
09-11-09 18:43:48.642000000 +09:00
09-11-09 18:43:48.642000000 +09:00
09-11-09 18:43:48.642000000 +09:00
09-11-09 18:43:48.642000000 +09:00
09-11-09 18:43:48.642000000 +09:00
09-11-09 18:43:48.642000000 +09:00
09-11-09 18:43:48.642000000 +09:00
09-11-09 18:43:48.642000000 +09:00
PL/SQLプロシージャが正常に完了しました。
早速のご回答ありがとうございます。
自身でも確認してみました!
変化無しですね。。。。
なぜそうなるのかがわからないです。。。
また調べます。。
No.4
- 回答日時:
エラーの内容は、
>ORA-00001: 一意制約(OES4.PK_SITT_IKO_LOG)に反しています
ですから、表にPrimary key句があるか、unique索引があるはずです。
その制限事項に引っかかってます。
タイムスタンプでもWindowsの場合の精度は1/100秒で、Unix/Linuxでも1/1000秒くらいです。
LoopしてInsertしたら同じTimeStampの値になるのは当然です。
No.2
- 回答日時:
どうしてもsystimestampを使うのなら……
SQL> set serveroutput on
SQL> begin
2 for i in 1..10 loop
3 dbms_output.put_line(systimestamp);
4 dbms_lock.sleep(0.1);
5 end loop;
6 end;
7 /
09-11-09 19:05:00.830000000 +09:00
09-11-09 19:05:00.960000000 +09:00
09-11-09 19:05:01.060000000 +09:00
09-11-09 19:05:01.160000000 +09:00
09-11-09 19:05:01.260000000 +09:00
09-11-09 19:05:01.361000000 +09:00
09-11-09 19:05:01.461000000 +09:00
09-11-09 19:05:01.561000000 +09:00
09-11-09 19:05:01.661000000 +09:00
09-11-09 19:05:01.761000000 +09:00
PL/SQLプロシージャが正常に完了しました。
ですかねえ……思いつくのは
DBMS_LOCKパッケージの実行権限が必要です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) マクロ(データ取得と転記)について教えてください 3 2022/12/24 12:18
- Visual Basic(VBA) Dateserialで データ抽出 2 2022/06/26 21:07
- Visual Basic(VBA) 配列の勉強をしています。使用する変数の意味、検索条件の書き方が難しいです。 2 2022/09/15 14:06
- Visual Basic(VBA) VBA Bookの表示、非表示 1 2022/09/16 20:44
- Visual Basic(VBA) VBA初心者です。 VBAで行単位で条件付き書式の色をカウントしたいです。 大量のデータがあるExc 3 2022/06/08 10:02
- Visual Basic(VBA) VBA初心者です。 VBAで行単位で条件付き書式の色をカウントしたいです。 大量のデータがあるExc 3 2022/06/08 10:00
- その他(プログラミング・Web制作) atcoder python コードへの助言 2 2022/08/12 15:31
- PHP php エラー 2 2022/10/23 16:43
- MySQL 次の時間帯の勝率の合計を求めるSQL文 1 2023/07/04 17:12
- Visual Basic(VBA) 日付の計算方法 2 2022/07/01 23:35
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ストアドプロシジャからストア...
-
Transact-SQLでストアードプロ...
-
SQL/Loaderでの年月日時分秒の...
-
ODBCリンクの際にACCESSでは読...
-
TeXの索引作成に関して
-
Accessのマクロでモジュールを...
-
SSIS 変数の値をSQL実行タスク...
-
callで順に実行されるプロシー...
-
ドメインの取得日を変更する方法
-
wordで文字の上に線を引きたい...
-
医は仁術ですか算術ですか
-
オラクルのデフォルトセッション数
-
エクセルVBAの次のコードの...
-
Access VBAで行ラベルが定義さ...
-
PL/SQLのエラーについて
-
エクセルVBAでUserFormを起動し...
-
ブラウザ上に表示されたデータ...
-
プロシージャの全検索?
-
ワードで日付を自動更新したい
-
自動連番でカラムを更新したい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ストアドプロシジャからストア...
-
ストアド実行時のエラー「参照...
-
時間項目を60進数から10進数へ...
-
質問:DBMS_OUTPUTの使用方法
-
PL/SQL 実行中のSID
-
PL/SQL exceptionを呼び出すには?
-
ROW_NUMBER()を使用したデータ取得
-
PL/SQLで連結(||)と結合(=>)の違い
-
パッケージ内のファンクション...
-
GET_DDLについて
-
PL/SQLのファンクションでのOUT...
-
PL/SQLの例外
-
ストアドプロシージャからアナ...
-
Oracle: PACKAGE BODY の分割
-
PL/SQLについて
-
ストアドプロシージャからスト...
-
ストアドについて質問
-
PL/SQLに関して
-
プロシージャ 引数 指定
-
動的SQL
おすすめ情報