1、檢視當前使用者,可以在 sql plus中執行下面語句
select user from dual;
2、用來呼叫系統函式
select to_char(sysdate,』yyyy-mm-dd hh24:mi:ss』) from dual;——獲得當前系統時間
select sys_context(』userenv』,』terminal』) from dual;——獲得主機名
select sys_context(』userenv』,』language』) from dual;——獲得當前locale
select dbms_random.random from dual;——獲得乙個隨機數
3、得到序列的下乙個值或當前值,用下面語句
select your_sequence.nextval from dual;——獲得序列your_sequence的下乙個值
select your_sequence.currval from dual;——獲得序列your_sequence的當前值
4、可以用做計算器
select 7*9 from dual;
專案裡經常見到類似下面的語句:
select seq_project.nextval from dual
用於獲取序列值。而自己並沒有建立dual這個表,這個表是誰建立的呢,主要是用來做什麼的呢?
下面是我找到的部分解釋:
dual是oracle與資料字典一起自動建立的乙個表,它只有一列:dummy,其資料型別為:varchar2(1)。
dual中只有一行資料:'x'。
dual屬於sys模式,但所有使用者都可以使用dual名稱訪問它。用select計算常量表示式、偽列等值時常用該錶,因為它只返回一行資料,而使用其它表時可能返回多個資料行。
在oracle資料庫中建立乙個序列,使表的pk順序生成為表建立序列
create sequence emp_sequence
increment by 1 -- 每次加幾個
start with 1 -- 從1開始計數
nomaxvalue -- 不設定最大值
nocycle -- 一直累加,不迴圈
cache 100;
create sequence nad_pv_sequ
increment by 1
start with 1807487
maxvalue 999999999999999999
nocycle
cache 100;
刪除序列
drop sequence nad_pv_sequ;
為表建立序列
create sequence empseq ... ;
select empseq.currval from dual ;
自動插入序列的數值
insert into emp
values (empseq.nextval, 'lewis', 'clerk',
7902, sysdate, 1200, null, 20) ;
dual表的作用
dual是乙個虛擬表,用來構成select的語法規則,oracle保證dual裡面永遠只有一條記錄。1.函式 select to char sysday,yyyy mm dd from dual 查詢系統當前的時間 select sys context userenv terminal from d...
Oracle中dual表的用途
dual是乙個虛擬表,用來構成select的語法規則,oracle保證dual裡面永遠只有一條記錄。我們可以用它來做很多事情,如下 1 檢視當前使用者,可以在 sql plus中執行下面語句 select user from dual 2 用來呼叫系統函式 select to char sysdat...
oracle中dual表的用法
dual是乙個虛擬表,用來構成select的語法規則,oracle保證dual裡面永遠只有一條記錄。我們可以用它來做很多事情,如下 1 檢視當前使用者,可以在 sql plus中執行下面語句 select user from dual 2 用來呼叫系統函式 select to char sysdat...