oracle存儲過程自增
㈠ 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就好了。