當前位置:首頁 » 存儲配置 » oracle存儲過程自增

oracle存儲過程自增

發布時間: 2022-04-28 20:20:26

㈠ Oracle中觸發器實現序列自增

Oracle8i中存儲過程的類型

Oracle8i支持的存儲過程類型有幾種?Oracle8i 支持四種不同類型的存儲過程用PL/sql或Java,都可以實現全部四種類型的存儲過程。這四種存儲過程類型是:

存儲過程頂級存儲過程允許客戶用任意商業邏輯擴展SQL。客戶用名稱調用存儲過程,可以在SQL、PL/SQL包、以及「頂級」位置上調用存儲過程。

存儲函數存儲函數實質上與存儲過程相同,不同之處在於存儲函數向調用者返回值。可以用名稱調用存儲函數,也可以在SQL、PL/SQL包、以及「頂級」位置上調用存儲函數。

資料庫觸發器:觸發器是與特定的表和視圖關聯的商業規則,修改對表或視圖時,SQL自動調用觸發器。Oracle8i 提供了幾種類型的觸發器:在SQLDML語句執行之前或之後激發的觸發器;在每一行更新之前或之後激發的觸發器;事件觸發器(例如:登錄、退出、DDL語句、資料庫啟動或關閉等的觸發器);替代(instead-of)觸發器。所有這些觸發器類型,都可以用PL/SQL或Java編寫。

對象類型方法 Oracle8 ™ 發行版8.0和Oracle8i提供了用SQL定義復合數據類型的能力。這些對象類型的方法,可以用Java實現,也可用PL/SQL實現。例如,可以用SQL定義一個訂單對象類型purchase_order_t,如下所示:

㈡ 在oracle存儲過程中建立序列

序列主要是用來生成固定的編號的,如:每次遞增一即可。
create sequence SEQ_ID
minvalue 1
maxvalue 99999999
start with 1
increment by 1
cache 30
cycle;
之後執行:
insert into tab (auto_id) values (SEQ_ID.Nextval);
備註:sequence 是一個自增長的序列,每次調用nextval的時候會自動增加,可以定義起始值,最大值,增量,cycle是表示循環,即到最大值後從起始值重新開始。 每次執行都是會自增的。

㈢ oracle是怎麼實現表的自增

用觸發器trigger的功能來實現它: 1、首先建立一個創建自增欄位的存儲過程create or replace procere pro_create_seq_col
(tablename varchar2,columnname varchar2)
as
strsql varchar2(1000);
begin
strsql := 'create sequence seq_'||tablename||' minvalue 1 maxvalue 999999999999999999 start with 1 increment by 1 nocache';
execute immediate strsql;
strsql := 'create or replace trigger trg_'||tablename||' before insert on '||tablename||' for each row begin select seq_'||tablename||'.nextval into :new.'||columnname||' from al; end;';
execute immediate strsql;
end;
/
2、Oracle中執行動態SQL時要顯示授權(即使該用戶擁有該相關許可權)GRANT CREATE ANY SEQUENCE TO UserName;
GRANT CREATE ANY TRIGGER TO UserName;
3、重新Compile存儲過程pro_create_seq_col; 4、搞定,下面我們就可以用這個存儲過程建立自增自段了。 5、調用存儲過程建立自增欄位(提示: 第一個參數是表名,第二個參數為自增欄位的名字)exec pro_create_seq_col('sb_zsxx','zsxh');
exec pro_create_seq_col('sb_sbxx','sbxh');
exec pro_create_seq_col('sb_jkx','pzxh');
exec pro_create_seq_col('sdspfp','sysfpid');

㈣ 如何讓oracle自動增長的序列到一定時間自動重新開始增長

做一個存儲過程,drop此序列,重建序列

做一個Oracle Job,按照你指定時間調度。

㈤ oracle怎麼實現id自增和設置主鍵啊

可以使用序列實現id自增,主鍵的語法為primary key。

當一個序列第一次被查詢調用時,它將返回一個預定值。在隨後的每次查詢中,序列將產生一個按指定的增量增長的值。序列可以循環,或者是連續增加的,直到指定的最大值為止。

創建序列語法如下:create sequence [模式]序列名稱[start with 起始數字] [increment by 增量][maxvalue 最大值|nomaxvalue][minvalue 最小值|nominva lue][cycle|nocuyle][cache 數目|nocache][order|noorder]。

具體代碼示例如下:

創建表

create table book(

bookId varchar2(4) primary key,

name varchar2(20)

);

創建序列

create sequence book_seq start with 1 increment by 1;

創建觸發器

create or replace trigger book_trigger

before insert on book

for each row

begin

select book_seq.nextval into :new.bookId from al;

end ;

添加數據

insert into book(name) values ('cc');

insert into book(name) values ('dd');

commit;

(5)oracle存儲過程自增擴展閱讀:

在數據表中,有時候需要主鍵值自動增加,但在Oracle資料庫中,沒有象Mysql的Autoincrement一樣自動增長的數據類型。在實現Oracle資料庫欄位自增功能時,利用DML觸發器來完成。

觸發器(trigger)是一些過程,當發生一個特定的資料庫事件時就執行這些過程,可以使用觸發器擴充引用的完整性。DML即數據操縱語言,用於讓用戶或程序員使用,實現對資料庫中數據的操作。基本的數據操作分成兩類四種:檢索(查詢)和更新(插入、刪除、修改)。

觸發器類似於函數和過程,其在資料庫中以獨立身分存在。觸發事件可以是對資料庫表的DML(insert、update或delete)操作等。



㈥ oracle中如何實現表中數據的自增,越簡單越好。

你好!

簡單點的方法:
在表中增加一個列,為自增序列,然後執行:

update 表 set 自增序列=rownum;

這樣快速,還不會出錯。

㈦ oracle資料庫表中某自段怎麼設置為自增欄位

呃,簡單點的方法:
在表中增加一個列,為自增序列,然後執行:
update

set
自增序列=rownum;
這樣就把以前的3000多萬行都編號了,然後再用sequence做序列;
這樣快速,還不會出錯。

㈧ 請我在 ORACLE 中 如何在 存儲過程 中創建一個觸發器, 或者在存儲過程中建立新的表並為其創建自增主鍵

自增主鍵用sequence就好了。

熱點內容
hp存儲擴容 發布:2024-11-17 23:29:16 瀏覽:569
在ftp中put表示什麼 發布:2024-11-17 23:29:12 瀏覽:383
mvc多文件上傳 發布:2024-11-17 23:13:56 瀏覽:155
玩游戲硬碟緩存32m 發布:2024-11-17 23:03:42 瀏覽:525
藍光存儲系統 發布:2024-11-17 23:03:41 瀏覽:436
地平線4提示配置低於最低怎麼辦 發布:2024-11-17 22:54:38 瀏覽:611
注冊銀行卡賬戶密碼填什麼 發布:2024-11-17 22:54:35 瀏覽:537
java壓縮上傳圖片 發布:2024-11-17 22:26:59 瀏覽:627
plc編程課件 發布:2024-11-17 22:18:23 瀏覽:469
我的世界伺服器信號一直在檢測 發布:2024-11-17 22:09:52 瀏覽:547