重構SEQUENCE的值

2021-08-30 18:04:28 字數 1443 閱讀 9494

2.db2版

create procedure pro_bd_seq()

begin

declare tabname varchar(200) ;

declare tabseq bigint default 0;

declare seqname varchar(200);

declare sqlstr varchar(2000);

declare seqstr varchar(2000);

--定義乙個游標,用於取得

declare mycursor cursor with return for mysql;

--獲得所有的表的名稱

for names as select t.tabname from

(select t.tabname from syscat.tables t where t.tabschema = 'risk' and t.type = 't' and t.tabname not like '%jtyh%' and t.tabname not like 'fe_%' )t inner join (

select tabname from syscat.columns c where c.colname = 'id'and c.typename = 'integer'

) c on t.tabname = c.tabname and t.tabname != 'pd_pa_account_relation' order by t.tabname

do set tabname = tabname;

--拼裝獲得每個表的最大的id值,用來重新設定sequence

set sqlstr = 'select max(id) from '||tabname;

--將獲得的表名拼裝到可執行的動態sql中去執行

prepare mysql from sqlstr;

--開啟游標

open mycursor;

--動態獲得多查詢出來的最大的id

fetch mycursor into tabseq;

--關閉

close mycursor;

--設定新的sequence

set tabseq = tabseq+1;

set seqname = 'seq_'||tabname;

set seqstr = 'alter sequence '||seqname||' restart with '||char(tabseq);

--執行修改

execute immediate seqstr;

set tabname = '';

set tabseq = 0;

end for;

end;

call pro_bd_seq;

機房重構 跨窗體傳值

果然c 的跨窗體傳值比vb難得多,vb就定義乙個全域性變數就ok,但是c 還要考慮到命名空間的問題 frmmain要呼叫loginui的兩個值,但是在此同時,frmmain又要引用loginui,所以說就遇到了乙個很麻煩的問題,一直在考慮命名空間的問題,但是其實和命名空間沒有太大的關係,我卻在命名空...

關於sequence的學習

sql create sequence b q s 1 2 start with 1 3 increment by 1 序列已建立。sql select b q s 1.currval from dual select b q s 1.currval from dual 第 1 行出現錯誤 ora ...

oracle的sequence的序列

它是oracle的序列的,是可以的實現和mysql的一樣的自動增長的。想要oracle的自動增長,你必須得有 1 首先要有create sequence或者create any sequence許可權,create sequence emp sequence increment by 1 每次加幾個...