數(shù)據(jù)庫(kù)無(wú)法回避的就是處理數(shù)據(jù)
情景:發(fā)票信息,很多公司員工在進(jìn)行交易的時(shí)候,填寫(xiě)的發(fā)票信息都是一樣的,所以公司員工往往想調(diào)用統(tǒng)一的發(fā)票信息,公司會(huì)計(jì)登錄系統(tǒng)可以填寫(xiě)通用發(fā)票信息,為了生成訂單簡(jiǎn)單,發(fā)票需要和員工號(hào)碼綁定,所以發(fā)票的表里想要復(fù)制一份員工號(hào)為會(huì)計(jì)的發(fā)票信息,改動(dòng)其中的員工號(hào),發(fā)票id,創(chuàng)建時(shí)間,其余不變
不知道大家弄懂應(yīng)用情境沒(méi),敘述能力有限。
解決:可以使用select into,但是感覺(jué)不方便和靈活。所以考略利用右邊和存儲(chǔ)過(guò)程,因?yàn)闆](méi)有返回值,就不寫(xiě)函數(shù)了
上代碼:
create or replace procedure myprocd( uid in varchar2 ) AS receipt_autoid number; BEGIN select SEQ_CHEM_DICT_RECEIPT.NEXTVAL into receipt_autoid from dual; for rs in (select * from CHEM_DICT_RECEIPT where user_id='0') loop rs.user_id:=uid; rs.id:=receipt_autoid; rs.receipt_id:='RE0215'||receipt_autoid; rs.created_time:=sysdate; insert into chem_dict_receipt values rs; end loop; END myprocd; execute myprocd('002');提醒:我實(shí)在是沒(méi)搞清楚序列如何在循環(huán)中增加,所以我更改了策略,我讓游標(biāo)只能讀取一次,也就是不再循環(huán),所以更改如下
CREATE OR REPLACE procedure SIT_HXPGL.myproce( uid_re in varchar2, type_re in varchar2 )AS receipt_autoid number(12); BEGIN select SEQ_CHEM_DICT_RECEIPT.NEXTVAL into receipt_autoid from dual; for rs in (select * from CHEM_DICT_RECEIPT where user_id='0' and receipt_type=type_re) loop rs.user_id:=uid_re; rs.id:=receipt_autoid; rs.receipt_id:='RE0215'||receipt_autoid; rs.created_time:=sysdate; insert into CHEM_DICT_RECEIPT values rs; end loop; END myproce; /無(wú)奈:代碼里沒(méi)有辦法標(biāo)紅。我新加了一個(gè)變量
type_re這樣我的游標(biāo)只能每次讀取一組數(shù)據(jù)。
最后加一句,關(guān)于執(zhí)行存儲(chǔ)過(guò)程,好像是call和execute都可以,推薦使用call
小思路:好像可以吧獲取自增序列放在自定義函數(shù),然后調(diào)用,可能不會(huì)有問(wèn)題
關(guān)于函數(shù)和存儲(chǔ)過(guò)程或者游標(biāo),這里有個(gè)鏈接很好,可以參考下
http://wen866595.iteye.com/blog/1733887 程序點(diǎn)滴
其中有個(gè)小問(wèn)題,我實(shí)在實(shí)踐中發(fā)現(xiàn)的,但是還沒(méi)看oracle的官方文檔。
問(wèn)題:存儲(chǔ)過(guò)程的結(jié)束END;
解決:END myproc;
解釋:應(yīng)該是要加上存儲(chǔ)過(guò)程的名字
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。