閑來(lái)沒(méi)事,新建了HSS的工程,結(jié)果一直報(bào)錯(cuò)。找了N久,終于找到原因了。
第一:用MyEclipse建立工程的時(shí)候選擇Sping1.2,hibernate3(注意不能選擇3.1),Struts1.1
第二:在action中實(shí)例化DAO接口時(shí),需要使用this指向該接口。
最近看到資料,對(duì)建表有了進(jìn)一步認(rèn)識(shí),原來(lái)建表還可以這樣建立。寫下來(lái),做個(gè)記錄。
CREATE TABLE payroll
( employee_id INT NOT NULL
, base_salary DOUBLE
, bonus DOUBLE
, commission DOUBLE
, total_pay DOUBLE GENERATED ALWAYS AS
??????????? (base_salary*(1+bonus) + commission)
)
CREATE TABLE payroll
( employee_id INT NOT NULL
, base_salary DOUBLE
, bonus DOUBLE
, commission DOUBLE
, total_pay DOUBLE GENERATED ALWAYS AS
??????????? (base_salary*(1+bonus) + commission)
)
INSERT INTO payroll VALUES (1, 100, 0.1, 20, DEFAULT); 或者INSERT INTO payroll (employee_id, base_salary, bonus, commission) VALUES (1, 100, 0.1, 20); 這樣就是建表的時(shí)候加入了計(jì)算了。省好多事情。很方便。
復(fù)雜的如下:CREATE TABLE payroll2 ( employee_id INT NOT NULL , employee_type CHAR(1) NOT NULL , base_salary DOUBLE , bonus DOUBLE , commission DOUBLE , total_pay DOUBLE GENERATED ALWAYS AS ( CASE employee_type WHEN 'B' THEN base_salary*(1+bonus) WHEN 'C' THEN (base_salary + commission) ELSE 0 END ) ) 這樣對(duì)數(shù)據(jù)操作很方便。也很有實(shí)用價(jià)值。
????? 首先,打開DB2開發(fā)中心,新建項(xiàng)目后,連接上指定的數(shù)據(jù)庫(kù)。右鍵點(diǎn)擊新建存儲(chǔ)過(guò)程,可以直接新建,也可以使用向?qū)Ыⅰ=ê煤缶腿缦滤暎?br />
CREATE PROCEDURE ERPT1104.PROCEDURE1 (? )
------------------------------------------------------------------------
-- SQL 存儲(chǔ)過(guò)程
------------------------------------------------------------------------
P1: BEGIN
END P1??????
??????? 這樣就是建立好了一個(gè)存儲(chǔ)過(guò)程。其中ERPT1104.PROCEDURE1 中‘ERPT1104’為數(shù)據(jù)庫(kù)模式名,PROCEDURE1 為存儲(chǔ)過(guò)程名稱,可以自行修改。(? )這里面為參數(shù),如果需要傳入?yún)?shù)或者傳出參數(shù),就需要寫了,格式為:In?a varchar(32) ,Out b varchar(32),InOut c varchar(32)此處In,Out,InOut為參數(shù)模式。a,b,c為參數(shù)名稱,varchar(32)為參數(shù)類型。
??????? 然后我們可以開始寫具體的內(nèi)容了。當(dāng)然是在BEGIN下面開始寫了。
一般來(lái)說(shuō),都是先定義變量。先講簡(jiǎn)單的查詢。
declare m varchar(32);
select name into m from custom where?id=a;
這個(gè)意思就是定義個(gè)變量m,根據(jù)id值從custom表中查出name值賦給變量m,此處的a是從外面?zhèn)鬟^(guò)來(lái)的參數(shù)值。注意,此處查到的數(shù)據(jù)僅一條時(shí)在這樣使用。如果是多條,就需要使用游標(biāo)了,那在下節(jié)在說(shuō)。本節(jié)不考慮。
這樣,我們得到了變量m的值,如果我們想自己定義變量的值,那就可以:
set m='jiao';
如果我們想執(zhí)行insert,update。
那就象SQL一樣寫就可以了。比如:
insert into custom?values(m);
update custom set name=m where id=a;
如果用戶想進(jìn)行大量的數(shù)據(jù)計(jì)算,可以自行體驗(yàn)下,基本方法就是這樣。
當(dāng)然還有簡(jiǎn)單判斷了,下面我們來(lái)說(shuō)IF,WHILE的用法
語(yǔ)言都學(xué)過(guò)不少了,這里就講下在DB2下是什么格式的:
if a='0' then
select * from custom;
else
select name from custom;
end if;
while a='0'?do
select * from custom;
end while;
注意使用while一定不能進(jìn)入死循環(huán)中。條件一定要寫對(duì)。
到次,你應(yīng)該會(huì)進(jìn)行一般的操作了。
??
CREATE PROCEDURE ERPT1104.PROCEDURE1 (? )
------------------------------------------------------------------------
-- SQL 存儲(chǔ)過(guò)程
------------------------------------------------------------------------
P1: BEGIN
END P1??????
??????? 這樣就是建立好了一個(gè)存儲(chǔ)過(guò)程。其中ERPT1104.PROCEDURE1 中‘ERPT1104’為數(shù)據(jù)庫(kù)模式名,PROCEDURE1 為存儲(chǔ)過(guò)程名稱,可以自行修改。(? )這里面為參數(shù),如果需要傳入?yún)?shù)或者傳出參數(shù),就需要寫了,格式為:In?a varchar(32) ,Out b varchar(32),InOut c varchar(32)此處In,Out,InOut為參數(shù)模式。a,b,c為參數(shù)名稱,varchar(32)為參數(shù)類型。
??????? 然后我們可以開始寫具體的內(nèi)容了。當(dāng)然是在BEGIN下面開始寫了。
一般來(lái)說(shuō),都是先定義變量。先講簡(jiǎn)單的查詢。
declare m varchar(32);
select name into m from custom where?id=a;
這個(gè)意思就是定義個(gè)變量m,根據(jù)id值從custom表中查出name值賦給變量m,此處的a是從外面?zhèn)鬟^(guò)來(lái)的參數(shù)值。注意,此處查到的數(shù)據(jù)僅一條時(shí)在這樣使用。如果是多條,就需要使用游標(biāo)了,那在下節(jié)在說(shuō)。本節(jié)不考慮。
這樣,我們得到了變量m的值,如果我們想自己定義變量的值,那就可以:
set m='jiao';
如果我們想執(zhí)行insert,update。
那就象SQL一樣寫就可以了。比如:
insert into custom?values(m);
update custom set name=m where id=a;
如果用戶想進(jìn)行大量的數(shù)據(jù)計(jì)算,可以自行體驗(yàn)下,基本方法就是這樣。
當(dāng)然還有簡(jiǎn)單判斷了,下面我們來(lái)說(shuō)IF,WHILE的用法
語(yǔ)言都學(xué)過(guò)不少了,這里就講下在DB2下是什么格式的:
if a='0' then
select * from custom;
else
select name from custom;
end if;
while a='0'?do
select * from custom;
end while;
注意使用while一定不能進(jìn)入死循環(huán)中。條件一定要寫對(duì)。
到次,你應(yīng)該會(huì)進(jìn)行一般的操作了。
??