資料庫中有很多表,我想在每個表的第1列自動生成一個integer型別的資料,每增加一行加1,所有表的第一例資料都到一個專用的表中取找最到的加一賦值給當前表的第一列,請問函式怎樣做,請各位前輩多多指教,我是初學者。
uj5u.com熱心網友回復:
select max(col) from TBuj5u.com熱心網友回復:
update seed_table set seed=seed+1 ;
if sqlca.sqlcode = 0 then
select seed into :l_seed from seed_table ;
commit ;
else
rollback ;
debugbreak()
MessageBox("錯誤!","更新seed錯誤-1!~n~n 請重試!"+sqlca.SQLErrText,StopSign!)
return
end if
uj5u.com熱心網友回復:
我在資料表中有兩列ID(INTEGER),NR(CHAR)用下面的陳述句不對Long ll_row
integer ls_bh
ll_row = dw_1.InsertRow(0)
dw_1.ScrollToRow(ll_row)
if dw_1.RowCount > 1 then
ls_bh = dw_1.GetItemNumber(4,'id')
else
ls_bh = ''
end if
uj5u.com熱心網友回復:
語法錯誤了uj5u.com熱心網友回復:
dw_1.GetItemNumber(4,'id')確認一下是不是第4行
uj5u.com熱心網友回復:
我用的是oracle資料庫存盤程序里有一個程序里自動提交的選項,與外面的事務不相連
自己做了一個表missequ(mismodel,mistable,key1,key2,key3,key4,misvalue)
create or replace procedure pd_mis_sequ(as_model in varchar2,as_table in varchar2,as_key1 in varchar2,as_key2 in varchar2,as_key3 varchar2,as_key4 in varchar2,as_key5 in varchar2,al_return_value out varchar2) is
PRAGMA AUTONOMOUS_TRANSACTION;
/*
作用:自定義序列,遞增1
as_key5 0:本地資料庫 1:遠程資料庫
coder:汪新
create:2010.11.8
*/
al_current_value missequ.misvalue%type;
begin
if as_key5='0' then --本地資料
begin
select misvalue into al_current_value from missequ
where mismodel=as_model and mistable=as_table and key1=as_key1 and key2=as_key2 and key3=as_key3 and key4=as_key4
for update;
exception
when NO_DATA_FOUND then
begin
insert into missequ(mismodel,mistable,key1,key2,key3,key4,misvalue)
values (as_model,as_table,as_key1,as_key2,as_key3,as_key4,0);
al_current_value:= 0;
end;
end;
update missequ
set misvalue=https://bbs.csdn.net/topics/misvalue + 1
where mismodel=as_model and mistable=as_table and key1=as_key1 and key2=as_key2 and key3=as_key3 and key4=as_key4 ;
al_return_value:=al_current_value + 1;
commit;
else
al_return_value:= 1;
end if;
end pd_mis_sequ;
這個程序里沒有寫遠程資料的寫法,呵呵,我現在專案還沒有用到,如果要,以后再寫
uj5u.com熱心網友回復:
新建一個表missequ(mismodel,mistable,key1,key2,key3,key4,misvalue)本程序是自動提交(獨立事務),不與應用程式有關
create or replace procedure pd_mis_sequ(as_model in varchar2,as_table in varchar2,as_key1 in varchar2,as_key2 in varchar2,as_key3 varchar2,as_key4 in varchar2,as_key5 in varchar2,al_return_value out varchar2) is
PRAGMA AUTONOMOUS_TRANSACTION;
/*
作用:自定義序列,遞增1
as_key5 0:本地資料庫 1:遠程資料庫
coder:汪新
create:2010.11.8
*/
al_current_value missequ.misvalue%type;
begin
if as_key5='0' then --本地資料
begin
select misvalue into al_current_value from missequ
where mismodel=as_model and mistable=as_table and key1=as_key1 and key2=as_key2 and key3=as_key3 and key4=as_key4
for update;
exception
when NO_DATA_FOUND then
begin
insert into missequ(mismodel,mistable,key1,key2,key3,key4,misvalue)
values (as_model,as_table,as_key1,as_key2,as_key3,as_key4,0);
al_current_value:= 0;
end;
end;
update missequ
set misvalue=https://bbs.csdn.net/topics/misvalue + 1
where mismodel=as_model and mistable=as_table and key1=as_key1 and key2=as_key2 and key3=as_key3 and key4=as_key4 ;
al_return_value:=al_current_value + 1;
commit;
else
al_return_value:= 1;
end if;
end pd_mis_sequ;
uj5u.com熱心網友回復:
看你使用什么資料庫了,比方說asa資料庫的欄位有autoincrement屬性,就非常方便了如果是oracle資料庫,就使用序列好了,結合觸發器一起使用也非常方便的,
采樣最大值加一的辦法,多人使用就容易出問題了,并發
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/81605.html
標籤:數據庫相關
