DB2 儲存過程建立 系統表

2022-07-17 22:12:21 字數 3887 閱讀 6393

前段時間做了資料表拆分,進行資料遷移,用到一些sql命令,語句記錄下來

db2look是db2用於生成資料庫ddl語句的乙個工具:

命令:db2look -d dbname -a -e -p -i userid -w password -o d:\sample.sql 

db2look -d:資料名稱 -e:抽取複製資料庫所需ddl -t:生成指定表統計資訊  pjnl

引數比較多這邊就沒列舉,主要用到以上就可以查詢到ddl。

db2 系統表

目錄檢視

描述

查詢例項

syscat.checks

檢查約束包含一行記錄

select constname, tabname, text from syscat.checks

syscat.colchecks

檢查約束所引用的每一列包含一行記錄

select constname, tabname, colname, usage from syscat.colchecks

syscat.columns

指明一列是可為空(y)還是不可為空(n)

select tabname, colname, nulls from syscat.columns where nulls = 'n'

select sum(length) from syscat.columns where tabname='';檢視列大小

syscat.constdep

為某些其他物件上的約束的每個依賴性包含一行記錄

select constname, tabname, btype, bname from syscat.constdep

syscat.indexes

為每個索引包含一行記錄

select tabname, uniquerule, made_unique, system_required from syscat.indexes 

syscat.keycoluse

檢視表主鍵

select constname, tabname, colname, colseq from syscat.keycoluse

syscat.references

為每個參照約束包含一行記錄

select constname, tabname, refkeyname, reftabname, colcount, deleterule, updaterule from syscat.references

syscat.tabconst

為每個惟一(u)主鍵(p)外來鍵(f)或表檢查(k)約束包含一行記錄

select constname, tabname, type from syscat.tabconst

syscat.tables

該錶的父表數目(該錶在其中充當子表的參照約束數目)

select tabname, parents from syscat.tables where parents > 0

syscat.tables

該錶的子表數目(該錶在其中充當父表的參照約束數目)

select tabname, children from syscat.tables where children > 0

syscat.tables

該錶的自引用參照約束數目(該錶在其中既充當父表又充當子表的參照約束數目)

select tabname, selfrefs from syscat.tables where selfrefs > 0

syscat.tables

在該錶上所定義的惟一約束(除了主鍵)的數目

select tabname, keyunique from syscat.tables where keyunique > 0

syscat.tables

在該錶上所定義的檢查約束的數目

select tabname, checkcount from syscat.tables where checkcount > 0

db2儲存過程建立

如果是在dbvisualizer工具建立需要這樣

--/

create

procedure proc_jnl(in in_transdate date,in num integer

)language sql

p1:

begin

declare v_max_pjnl integer

;

declare v_min_pjnl integer

;

declare v_count integer

;

select

max(jnlno),min(jnlno) into v_max_pjnl,v_min_pjnl from pjnl_his where transdate >

in_transdate;

set v_count=

v_min_pjnl;

p2:

begin

while v_min_pjnl<=

v_max_pjnl do

set v_count=v_min_pjnl+num;--

每次進來檢查是否大於最大值

if v_min_pjnl > v_max_pjnl then

set v_count=v_max_pjnl+1;

endif

;

insert

into pjnl select

*from pjnl_his where jnlno >=v_min_pjnl and jnlno <

v_count;

commit

;

insert

into pjnldata select

*from pjnldata_his where jnlno >=v_min_pjnl and jnlno <

v_count;

commit

;

set v_min_pjnl=v_min_pjnl+

num;

endwhile

;

endp2;

end p1

/

執行方式: 

call  proc_jnl('2017-10-10',50000);

db2有五種約束:

建立 not null:

db2 "alter table tabname alter colname drop not null"

db2 "alter table t01 alter colname set not null"

建立、刪除唯一約束:

db2 "alter table tabname add unique(colname)"

db2 "alter table tabname drop unique constname "

建立主鍵約束:

db2 "alter table staff add primary key (id)"

建立外來鍵約束:

db2 alter table project add foreign key (respemp) references employee on delete cascade

表檢查約束:

db2 alter table employee add constraint phoneno_length check (length(rtrim(phoneno)) = 4)

db2儲存過程批量插入資料 db2儲存過程批量更新

db2儲存過程批量更新 雲伺服器 elastic compute service,簡稱ecs 是阿里雲提供的效能卓越 穩定可靠 彈性擴充套件的iaas infrastructure as a service 級別雲計算服務。雲伺服器ecs免去了您採購it硬體的前期準備,讓您像使用水 電 天然氣等公共...

db2儲存過程批量插入資料 db2儲存過程批量提交

db2儲存過程批量提交 雲伺服器 elastic compute service,簡稱ecs 是阿里雲提供的效能卓越 穩定可靠 彈性擴充套件的iaas infrastructure as a service 級別雲計算服務。雲伺服器ecs免去了您採購it硬體的前期準備,讓您像使用水 電 天然氣等公共...

DB2儲存過程雜談

db2常用的異常處理方式分為三種 undo 回滾 exit 退出 continue 繼續執行 declare undo exit continue handler for 異常處理的物件可以為針對指定的sqlstate declare undo exit continue handler for s...