電子書籍の厳選無料作品が豊富!

Customer_IDに格納する新しい値を取得し、新規顧客に関する情報をCustomer表に格納するストアードファンクションの例

create or replace function Get_New_Customer_ID
(Salutation varchar2,
Last_Name varchar2,
First_Name varchar2,
Street_Address varchar2,
City varchar2,
State varchar2,
Zipcode varchar2,
Home_Phone varchar2,
Work_Phone varchar2)
return number is
New_Customer_ID number(4);
begin
select Customer_Sequence.nextval
into New_Customer_ID
from dual;
insert into Customer
(Customer_ID, Salutation, Last_Name, First_Name,
Street_Address, City, State, Zipcode, Home_Telephone_Number,
Work_Telephone_Number)
values
(New_Customer_ID, Salutation, Last_Name, First_Name,
Street_Address, City, State, Zipcode, Home_Phone, Work_Phone);
return New_Customer_ID;
end;
/


において、
select Customer_Sequence.nextval
into New_Customer_ID
from dual;
のCustomer_Sequence.nextvalがどういう意味なのかわからくて困っております。dualという表しか使っていないのに、Customer_Sequenceという表のnextvalという列から取り出しているように見えて違和感を感じるのです。また、新しい値を取得というのは、ユーザがキーボードで打ち込むのでしょうか?
また、dualはシステムで用意されている表なのでしょうか?

A 回答 (2件)

一意な通し番号を得る仕組みとして、SEQUENCE型というデータ型があります。



このselect文では、次の通し番号を得ています。

表名のdualというのは、「select 関数など from 表名」といった構文で、特定の表名が必要ない場合に指定できるダミーです。
    • good
    • 0
この回答へのお礼

わかりました。ありがとうございます。

お礼日時:2006/04/25 16:11

Customer_Sequence別の場所で定義されていると思いますが、SEQUENCE型なのでしょう。


SEQUENCE型は順番にユニークな番号を生成する特殊な型で、DUALとはOracleに用意されているダミーの表です。

参考URL:http://www.mitene.or.jp/~rnk/TIPS_ORCL_SEQ.htm
    • good
    • 0
この回答へのお礼

わかりました。ありがとうございました。

お礼日時:2006/04/25 16:11

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す