- ベストアンサー
オラクルのシーケンスについて
オラクルのSEQUENCEを使いたいのですが 作り方(CREATE文)が分かりません。 また出来上がったSEQUENCEはどのように 使うのでしょうか。
- papa_kun
- お礼率30% (6/20)
- その他(データベース)
- 回答数1
- ありがとう数1
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
create sequence (sequence_name) START WITH 1 INCREMENT BY 1 NOCYCLE などです。 利用するときは、擬似列を使います。(ROWNUMなどの擬似列と同じです) (sequence_name).CURRVAL で、シーケンスの現在の値を返し、 (sequence_name).NEXTVAL で、増分して其の次の値を返します。 例: create sequence seq1 START WITH 1 INCREMENT BY 1 NOCYCLE; select seq1.nextval from dual; select seq1.currval from dual; PostgreSQLとそっくりです。
関連するQ&A
- oracle sequence
oracleのシーケンスでdual表からselect文のnextvalで取得したものをインサート したいのですが、ループ内で上記処理を複数回行ったときに、値が一回目以降 更新されずに困っています。 例) for (i=0;i < 5){ (1)セレクト文発行しシーケンスを取得。 (2)取得したシーケンスを変数にセット (3)インサート実行(主キーに取得したシーケンスをセット) } こんな感じで実行したときに、はじめはシーケンスが+1されますが、 それ以降シーケンスが増加しません。そのため、重複エラーが発生してしまいます。。。 どのように対処したらよいのかまったく見当がつきません。 大変申し訳ないのですが、ご教示いただきたくよろしくお願い申し上げます。
- 締切済み
- Oracle
- オラクルのシーケンスについて
オラクルのシーケンスですがCACHEを指定しないときはデフォルト20がとられるとのことですが、NEXTVALで採番したシーケンスがいきなり増分20で返されることはあるのでしょうか。 ex.1からNEXTVAL後21が戻される
- ベストアンサー
- Oracle
- oracleのsequenceについて
oracle masterのオラクル入門の勉強をしています。 知識があやふやなので教えてもらいたいのですが、 オブジェクトであるsequenceにアクセスできるのは 作成したユーザーのみ(そのスキーマ内)? or 複数のユーザー(全てのスキーマ内)でも可能? どちらでしょうか? スキーマの名前が変更されているかもしれませんが、 スキーマとユーザーは同じ意味ですよね?
- 締切済み
- ネットワーク
- oracleのシーケンスについて
こんにちは。oracleのシーケンスについて教えてください。 次のようなシーケンスを作成します。 CREATE SEQUENCE SQC_TEST INCREMENT BY 1 START WITH 1 MAXVALUE 999999 MINVALUE 1 CASHE 20 CYCLE / この時、キャッシュ分の20という値は、いつどこでクリア?されるのか知りたいのです。 一番最初はシーケンスをクリエイトした時にキャッシュが20確保されると思うのですが、次にキャッシュが確保されるタイミングっていつなんでしょう? 最初の20を使い果たした時?それともシーケンスを作成してあるインスタンスをリブートした時?? というのは、設定したシーケンスが、実際発番していないのに一日ごとに20ずつカウントされていってるので原因をつきとめたいのです。 とりあえずはNOCACHEに設定してありますが、原因がわかれば、と思い質問させていただきました。 何かアドバイスいただけたらと思います。宜しくお願いいたします。
- 締切済み
- その他(データベース)
- オラクルのシーケンスについて
オラクルの連番(シーケンス)の振り方について一つお聞きしたい事がございます。 Insert時にシーケンスを使い、0から100まで順に連番を振りたいの ですが、100に到達する前に、あるタイミングで現在値を0に戻して 再び1から連番を振りたいんです。 ちなみにあるタイミングを、下記に簡単に例として書きます。 (1)ファイルから1レコードずつデータを読み込む。 (1)初回は何もチェックせずInsertをし、先頭から4バイトまでの値を変数に格納 (2)2レコード目以降は、先頭から4バイトまでの値を前回の値(変数)と比較 True(値が同じ) ⇒順番に連番を振る False(値が違う) ⇒新たに0から連番を振る。 変わった値を変数に格納する。 (2)Insertをする。 私の知っている知識で行けば、シーケンスは1テーブルで一つのシーケンス しか使用できなかったはずですが・・・なにぶん知識がないので、もしか したら出来たのかな?と思ったので質問しました。 上に書いた事が可能であるかどうか教えてください。 よろしくお願いします。
- ベストアンサー
- その他(データベース)
- oracle シーケンスの欠番を確認したい
いつもお世話になります。 oracleのシーケンスの欠番を確認したいのですが、以下のようにサービス、インスタンスの再起動を試してみたのですが欠番はおきませんでした。 ・サービスの再起動 コントロールパネルから、サービスを開いて、「OracleServiceXE」、「OracleXETNSListener」の再起動。 シーケンスをselectした結果、欠番確認できず。 ・インスタンスの再起動 コマンドプロンプトを起動し、sqlplusから、sysdbaでoracleに接続。 shutdown、startupコマンドを行い、インスタンスを再起動。 シーケンスをselectした結果、欠番確認できず。 インスタンスの再起動を行えば欠番がおきる、というのをサイトで見たのですが、欠番は起きませんでした。なぜ起きないのでしょうか。 何か手順に不備があるのでしょうか。 alter system文による欠番は確認しています。 しかし、意図的にこのコマンドを発行しなければよいので、確認したいのは、通常運用時、データベースが起因してシーケンスの欠番が発生してしまう、ということです。 再起動などは普通に行うと思うので、その際に欠番が発生することを確認したいのです。 宜しくお願いします。 oracle:Oracle Database 11g Express Edition Release 11.2.0.2.0 OS:Windows Vista Home Promium 64bit
- ベストアンサー
- Oracle
- Oracle:Oracleシーケンスとは?
Oracleシーケンスとは何者なのでしょうか? なにやら番号のようなものですよねえ・・・たぶん ということで以下について教えて下さい。 1.シーケンスとは何ですか? 2.Oracleシーケンスとは何ですか? 3.どのようにOracleシーケンスを取得するのですか? 以上、宜しくお願いいたします。
- 締切済み
- その他(データベース)
- Oracleのシーケンスありのテーブル作成について
Oracleのテーブルを作るのに、ある列を自動で「全体の通し番号」みたいなユニーク(一意)な番号を振りたいく、 シーケンス(sequence)を作成しテーブルを作ろうとしているのですがうまくいきません。 どこがわるいのでしょうか。 create sequence "yamaaf_seq"; CREATE TABLE TBL_AFFILIATE_SESS( UNIQ_ID NUMBER(11,0) DEFAULT nextval('yamaaf_seq') NOT NULL, ORG_CODE VARCHAR2(64) NOT NULL, primary key("UNIQ_ID"));
- ベストアンサー
- Oracle
- Oracle 10gで順序sequenceの作成(定義)した内容を見るには?
Oracle 10gで順序sequenceの作成(定義)した内容を見るにはどうしたらよいのでしょうか? desc sequence_nameでは SP2-0381: DESCRIBE sequenceは使用できませんと表示されます。
- ベストアンサー
- Oracle
- Oracle11gでcreate文で指定するInitialとNext?
Oracle11gでcreate文で指定するInitialとNext?っていったいどういう値ですか? 初心者です。 よろしくおねがいします。。
- ベストアンサー
- Oracle
お礼
大変ありがとうございました。助かりました。 おまけに桁数の指定も教えていただけると 助かったのですが・・・