數據庫oracle銀行管理系統_第1頁
數據庫oracle銀行管理系統_第2頁
數據庫oracle銀行管理系統_第3頁
數據庫oracle銀行管理系統_第4頁
數據庫oracle銀行管理系統_第5頁
已閱讀5頁,還剩35頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、目 錄摘 要1一、 設計銀行管理系統結構圖1.1系統結構圖2二、 銀行管理系統E-R圖和表結構2.1E-R圖32.2表結構5三、創建系統數據表3.1創建表空間和用戶63.2創建用戶信息表并添加約束63.3創建銀行卡信息表83.4創建交易信息表9四、 模擬常規業務操作4.1建立更新賬號觸發器114.2存取款交易操作114.3用戶開戶134.4更改密碼154.5賬號掛失164.6余額查詢164.7轉賬業務設置174.8銀行盈利結算184.9撤戶操作18五、總 結20參考文獻21附錄22摘 要  隨著計算機的飛速發展及應用領域的擴大,特別是計算機網絡和電子商務的發展,極大的改變了商業銀行傳

2、統的經營模式。能夠為客戶提供方便、快捷、安全的服務,也能夠有效的降低銀行的營運成本,這是銀行存儲系統追求的目標。目前,對于現代化銀行運營的要求是客戶可以實現方便安全的業務交易,銀行職員可以進行高效合理的工作管理,實現銀行業務電子化。方便用戶快速的進行存款、取款、修改密碼以及完成一些轉賬的交易,大大提高辦公效率,能夠及時、準確、有效的幫用戶辦理各種繁瑣的手續,也減緩了銀行工作人員的壓力。1、 設計銀行管理系統結構圖1.1系統結構圖銀行系統信息查詢財務管理賬戶管理圖1.1系統結構圖2、 銀行管理系統E-R圖和表結構2.1E-R圖身份證號開戶開戶信息表住址聯系電話開戶名聯系電話開戶名身份證號 圖2.

3、1開戶開戶金額是否掛失用戶編號密碼開戶日期貨幣種類余額卡號存款類型銀行信息表 圖2.2卡號交易金額交易日期交易類型交易信息表交易2.2表結構 通過對銀行管理系統的需求分析,應該為該系統設計3個表,分別為用戶信息表、銀行卡信息表和交易信息表。 用戶信息表用于存儲用戶的基本信息,包括用戶的編號、開戶名、身份證號、聯系電話和家庭住址等信息 表2.1 用戶信息表字段名稱字段描述數據類型長度約束customer用戶編號Number4主鍵customer開戶名Varhcar220必填PID身份證號Varchar218必填telephone聯系電話Varchar213必填Address家庭地址Varchar

4、250無 銀行卡信息表用于存儲銀行卡相關的信息主要包括卡號、存儲的貨幣類型,存款方式,開戶時間,開戶金額,余額、銀行卡密碼、是否掛失和用戶編號等信息, 表2.2銀行卡信息表字段名稱字段描述數據類型長度約束cardID卡號Varchar220主鍵curType貨幣種類Varhcar210必填SavingType存款類型Varchar28非空Opendate開戶日期DATETIME必填openmoney開戶金額Number8必填Balance帳戶余額Number8必填Isreportloss是否掛失Varchar22必填Customer開戶編號Varchar4外鍵 交易信息表用于存儲用戶的交易記錄

5、,主要包括交易日期,卡號、交易類型,交易金額等信息。 表2.3交易信息表字段名稱字段描述數據類型長度屬性Transdate交易日期DatetimePKcardID卡號Varhcar220非空transTYPE交易類型VARCHAR24非空transMoney交易金額NUMBER4非空remark備注VARCHAR250非空 三、創建系統數據表3.1創建表空間和用戶 使用system用戶連接數據庫后,創建表空間space_zqp,指定數據文件為D:Bank.dbf,代碼如下圖: 圖3.1表空間和用戶3.2創建用戶信息表并添加約束用戶信息表保存了用戶的基本信息,該表的創建語句如下,CREATE T

6、ABLE userInfo(customerID NUMBER(4) NOT NULL,customerName VARCHAR2(20) NOT NULL,PID VARCHAR2(18) NOT NULL,telephone VARCHAR2(13) NOT NULL,address VARCHAR2(50)PARTITION BY HASH(PID)( PARTITION pid1, PARTITION pid2, PARTITION pid3,);ALTER TABLE userInfoADD CONSTRAINT PK_customerID PRIMARY KEY(customerI

7、D)ADD CONSTRAINT UK_PID UNIQUE(PID)ADD CONSTRAINT CK_PID CHECK(LENGTH(PID)=18 OR LENGTH(PID)=15)ADD CONSTRAINT CK_telephone CHECK(telephone LIKE '0-90-90-90-9-0-90-90-90-90-90-90-90-9'ORLENGTH(telephone)=13);-創建可以自動生成自增主列的序列 customerid_seqCREATE SEQUENCE customerid_seqSTART WITH 1INCREMENT B

8、Y 1NOCACHE 如上述語句所示,在userInfo表中包含用戶編號(customerid)、開戶名(customername)、身份證號(PID)、聯系電話(telephone)、家庭住址(address)。其中,customerid為主鍵,自增(從1開始);PID只能是18位或15位,并且是唯一的;telephone必須是xxxx-xxxxxxxx的格式或13位的手機號碼。 圖3.2用戶信息表3.3創建銀行卡信息表 銀行卡信息表(cardinfo)中包含了卡號(cardid),貨幣種類(curType),存款類型(savingtype),開戶日期(opendate),開戶金額(open

9、money),余額(balance),密碼(pass),是否掛失(isREPORTLOSS)和用戶編號(customerID)的信息。其中,cardID為主鍵,必須為1010 3756 xxxx xxxx的格式;CURTYPE默認為RMB,openmoney必須不能低于一元;balance也必須不能低于一元;pass默認為88888888;ISREPORTLOSS的值必須是“是/否”中之一,默認為否;customerID為外鍵,引用userInfo表中的customerID列。圖3.3 3.4創建交易信息表 交易信息表中包含了五個字段,分別為transdate(交易日期),cardID(卡號)

10、、TRANSTYPE(交易類型),transmoney(交易金額)和remark(備注)。其中,transdate默認為系統當前日期;cardid位外鍵,引用cardinfo表中的cardid列,可重復;transtype只能是“存入/取出”之一;transmoney必須大于0.圖3.4交易信息表四、模擬常規業務操作4.1建立更新賬號觸發器結果如下:圖4.1創建before update觸發器4.2存取款交易操作 當用戶辦理取款或存款業務時,不僅需要向交易信息表中添加一條交易記錄,還需要修改當前賬戶中的余額,如果辦理取款業務,如果將當前賬戶總的余額減去支取余額,如果辦理托管業務,多叫當前賬戶中

11、的金額加上存款金額。 在交易信息表中包含一個名為transtype的字段,該字段用于表示交易類型,取值范圍必須是存入或者自取,因此可以為transINFO表創建BEFORE INSERTR觸發器。根據要辦理里的交易類型,判斷出當前的交易類型,如果transtype字段值為“支取”,則表示要辦理取款業務,檢測當前余額是否大于或等于要支取的金額,如果滿足條件,則要修改cardinfo表中的balance字段值,將該字段值減去交易金額(transmoney),如果transtype字段值為“存入”,則表示要辦理存款業務,修改cardinfo表中的balance字段值,將該值加上交易金額(transm

12、oney)。代碼如下:reate or replace trigger trig_transbefore insert or update on transinfofor each rowdeclare my_balance number;rate_exception exception;begin select balance into my_balance from cardinfo where cardid=:new.cardid; if :new.transtype='支取' then if my_balance<:new.transmoney-1 thendbm

13、s_output.put_line('對不起,您的余額不足!'); return;elsif my_balance>:new.transmoney-1 then update cardinfo set balance=balance-:new.transmoney where cardId=:new.cardId; end if;elsif :new.transtype='存入' thenupdate cardinfo set balance=balance+:new.transmoney where cardid=:new.cardId; end if;

14、 dbms_output.put_line('交易成功!'); exception when rate_exception then raise_application_error(-20001,'交易失敗'); end;select * from cardInfo_vw;insert into transInfo (transdate,cardID,transType,transMoney) values(sysdate,'1010 3576 8888 6666','存入',1000);commit;4.3用戶開戶 根據身份證號

15、查詢是否在該行開過戶,為萬無一失,還需要查詢生成的卡號是否已經被使用,如果這兩個條件都符合要求(此人從未在該行開過戶,生成的卡號也無人使用),則向userinfo表中插入開戶人的基本信息記錄,并根據開戶人的身份證號獲取開戶人的編號,從而向cardinfo表中插入開戶人的基本信息記錄,同時還需要將生成的卡號顯示給開戶人。如果收到卡號已經被使用,得提醒用戶開戶失敗;如果當前開戶人已經在此行開過戶,則提示用戶此身份證已有賬號。 結果如下圖:圖4.24.4更改密碼 一個銀行賬號對應一個密碼,因此當用戶輸入的卡號密碼相對應時,可以為該銀行卡設置新的密碼,代碼: create or replace pro

16、cedure proc_updateUserPass(temp_cardid varchar2, -卡號oldpass varchar2, -舊密碼newpass varchar2 -新密碼)asi number;pass_i VARCHAR2(6);beginselect count(*) into i from cardInfo where cardID=temp_cardid;select pass into pass_i from cardInfo where cardID=temp_cardid;if i=0 thendbms_output.put_line('此卡號不存在!

17、');elsif i>0 thenif pass_i=oldpass thenUPDATE cardInfo set pass=newpass where cardid=temp_cardid;dbms_output.put_line('密碼更改成功!');elsedbms_output.put_line('舊密碼不正確!');end if;end if;commit;exceptionwhen others thendbms_output.put_line('密碼更改失敗!');end4.5賬號掛失 當用戶的銀行卡丟失后,可以對該

18、卡進行掛失,銀行管理系統需要驗證用戶的真實性,當用戶輸入銀行卡號和密碼相對應,才可以對該卡進行掛失操作,即修改cardinfo表中的IsreportLOSS列為“是”,否則提示“無權掛失”。結果如圖: 圖4.34.6余額查詢 用戶可以使用銀行管理系統,辦理余額查詢等業務,系統要求用戶輸入銀行卡賬號和密碼,當用戶輸入的賬號和密碼都合法時,系統就查詢該用戶的賬戶余額,否則將提示用戶“賬號或密碼錯誤!”,代碼:CREATE OR REPLACE procedure pro_query_balance(card_id varchar2, -帳戶card_pass varchar2) -密碼asi NU

19、MBER:=0;not_data_found exception;user_balance NUMBER(8);beginselect count(*) into i from cardInfo where cardID=card_id and pass=card_pass;if i=0 thenraise not_data_found;elseselect balance into user_balance from cardInfo where cardID=card_id and pass=card_pass;dbms_output.put_line('你帳號的余額為:'

20、|user_balance);end if;exceptionwhen not_data_found thendbms_output.put_line('帳號或密碼錯誤!');end;4.7轉賬業務設置 自助銀行管理系統辦理轉賬業務時,要求用戶輸入正確的用于轉賬的卡號和密碼,以及獲得轉賬的卡號和轉賬金額,系統將根據用戶輸入的卡號和密碼,檢測該銀行卡是否存在,如果存在,則判斷該銀行卡余額是否大于要轉賬的余額;如果大于,則向表中插入兩條交易記錄,一條支取的記錄,一條為存入的記錄,并提示用戶轉賬成功;如果用戶輸入的卡號和密碼不正確,則提示“你的卡號或密碼有誤!”。4.8銀行盈利結算

21、銀行的管理人員可以統計銀行的資金流通余額和盈利結算,資金流動金額等于總存入-總支數金額;盈利結算,等于總支出金額乘以8%-總存入金額乘以3%,代碼如圖:圖4.44.9撤戶操作 當用戶不再需要使用某張銀行卡時,可去銀行辦理撤戶操作,撤戶操作需要用戶輸入正確的卡號和密碼,系統將根據用戶輸入的數據對該銀行卡進行驗證,如果該銀行卡存在,都需要將卡上的余額全部取出,并刪除該卡在cardinfo表中的記錄,以及在transinfo表中所有的交易記錄。代碼如下圖圖4.5五、總 結 通過此次課程設計,使我更加扎實的掌握了有關數據庫方面的知識,在設計過程中雖然遇到了一些問題,但經過一次又一次的思考,一遍又一遍的

22、檢查終于找出了原因所在,也暴露出了前期我在這方面的知識欠缺和經驗不足。實踐出真知,通過親自動手制作,使我們掌握的知識不再是紙上談兵。 在課程設計過程中,我們不斷發現錯誤,不斷改正,不斷領悟,不斷獲取。最終的檢測調試環節,本身就是在踐行“過而能改,善莫大焉”的知行觀。這次課程設計終于順利完成了,在設計中遇到了很多問題,最后在老師的指導下,終于游逆而解。在今后社會的發展和學習實踐過程中,一定要不懈努力,不能遇到問題就想到要退縮,一定要不厭其煩的發現問題所在,然后一一進行解決,只有這樣,才能成功的做成想做的事,才能在今后的道路上劈荊斬棘,而不是知難而退,那樣永遠不可能收獲成功,收獲喜悅,也

23、永遠不可能得到社會及他人對你的認可! 參考文獻1郝安林,Oracle 11g基礎教程與實驗指導,清華大學出版社 2王珊,數據庫系統概論,高等教育出版社3王霓虹,數據庫系統原理 ,哈爾濱工業出版社(十二五規劃教材)4李建中,數據庫系統原理,電子工業出版社(原理)5Stephens著,數據庫設計,機械工業出版社6李丙洋.涂抹oracle-三思筆記之一步一步學oracleM中國水利水電出版社,2010.1 7 Karen Morton.Oracle SQL高級編程M.人民郵電出版社,2011.11 8 梁敬彬,梁敬弘.收獲不止or

24、acleM.電子工業出版社,2013.5 9 蓋國強.循序漸進oracle數據庫管理、優化與備份恢復M.人民郵電出版社,2011.8 10Lan Abramson,Micheael Abbey,Michael J.Corey,竇朝輝.oracle database 11g:初學者指南M.清華大學出版社,2010-01附錄程序源代碼:CREATE TABLESPACE space_zqpDATAFILE 'D:Bank.dbf' SIZE 50MAUTOEXTEND ON NEXT 5M MAXSIZ

25、E UNLIMITED;創建用戶zqp,用戶密碼:zqpCREATE USER zqpIDENTIFIED BY zqpDEFAULT TABLESPACE space_zqp;TEMPORARY TABLESPACE tempQUOTA 20M ON space_xianglin;/用戶已創建GRANT DBA TO XIANGLIN;/授權成功CONNECT xianglin/accp;/已連接REATE TABLE userInfo(customerID NUMBER(4) NOT NULL,customerName VARCHAR2(20) NOT NULL,PID VARCHAR2(

26、18) NOT NULL,telephone VARCHAR2(13) NOT NULL,address VARCHAR2(50)-根據身份證ID創建散列分區PARTITION BY HASH(PID)( PARTITION pid1, PARTITION pid2, PARTITION pid3,);-為userInfo表添加約束條件ALTER TABLE userInfoADD CONSTRAINT PK_customerID PRIMARY KEY(customerID)ADD CONSTRAINT UK_PID UNIQUE(PID)ADD CONSTRAINT CK_PID CHEC

27、K(LENGTH(PID)=18 OR LENGTH(PID)=15)ADD CONSTRAINT CK_telephone CHECK(telephone LIKE '0-90-90-90-9-0-90-90-90-90-90-90-90-9'ORLENGTH(telephone)=13);/表已更改-創建可以自動生成自增主列的序列 customerid_seqCREATE SEQUENCE customerid_seqSTART WITH 1INCREMENT BY 1NOCACHE;/序列已創建CREATE TABLE cardIofo(cardID VARCHAR2(2

28、0) NOT NULL,curType VARCHAR2(10) NOT NULL,savingType VARCHAR2(8) NOT NULL,openDate DATE NOT NULL,openMoney NUMBER(8) NOT NULL,balance NUMBER(8) NOT NULL,pass VARCHAR2(6) NOT NULL,IsReportLoss VARCHAR2(2) NOT NULL,customerID NUMBER(4) NOT NULL)-根據開戶日期創建表分區PARTITION BY RANGE(openDate)(PARTITION openDa

29、te_p1 VALUES LESS THAN(TO_DATE('01/01/2007','dd/mm/yyyy'),PARTITION openDate_p2 VALUES LESS THAN(TO_DATE('01/04/2007','dd/mm/yyyy'),PARTITION openDate_p3 VALUES LESS THAN(TO_DATE('01/07/2007','dd/mm/yyyy'),PARTITION openDate_p4 VALUES LESS THAN(TO_DATE

30、('01/10/2007','dd/mm/yyyy'),PARTITION openDate_p5 VALUES LESS THAN(TO_DATE('01/01/2008','dd/mm/yyyy'),PARTITION openDate_p6 VALUES LESS THAN(TO_DATE('01/04/2008','dd/mm/yyyy'),PARTITION openDate_p7 VALUES LESS THAN(TO_DATE('01/07/2008','dd/

31、mm/yyyy'),PARTITION openDate_p8 VALUES LESS THAN(TO_DATE('01/10/2008','dd/mm/yyyy'),PARTITION openDate_p9 VALUES LESS THAN(TO_DATE('01/01/2009','dd/mm/yyyy'),PARTITION openDate_p10 VALUES LESS THAN(TO_DATE('01/04/2009','dd/mm/yyyy'),PARTITION openD

32、ate_p11 VALUES LESS THAN(TO_DATE('01/07/2009','dd/mm/yyyy'),PARTITION openDate_p12 VALUES LESS THAN(maxvalue);/表已創建-為cardInfo表添加約束條件ALTER TABLE cardIofoADD CONSTRAINT PK_cardID PRIMARY KEY(cardID)ADD CONSTRAINT CK_cardID CHECK(TRANSLATE(cardID,'0123456789 ','xxxxxxxxxx &#

33、39;)='xxxx xxxx xxxx xxxx' ANDINSTR(cardID,'1010 3576 ')=1)ADD CONSTRAINT CK_sav CHECK(savingType IN ('活期','定期兩便','定期')ADD CONSTRAINT CK_openMoney CHECK (openMoney>=1)ADD CONSTRAINT CK_pass CHECK(LENGTH(pass)=6)ADD CONSTRAINT CK_IsRePortLoss CHECK(IsReportL

34、oss IN ('是','否')ADD CONSTRAINT FK_customerID FOREIGN KEY(customerID) REFERENCES userInfo(customerID)MODIFY(curType DEFAULT 'RMB')MODIFY(openDate DEFAULT sysdate)MODIFY(pass DEFAULT 888888)MODIFY(IsReportLoss DEFAULT '否');/表已更改CREATE TABLE transInfo(transDate DATE NOT

35、NULL,cardID VARCHAR2(20) NOT NULL,transType VARCHAR2(4) NOT NULL,transMoney NUMBER(4) NOT NULL,remark VARCHAR2(50)-根據交易時間創建表分區PARTITION BY RANGE(transDate)(PARTITION transDate_p1 VALUES LESS THAN(to_date('01/01/2007','dd/mm/yyyy'),PARTITION transDate_p2 VALUES LESS THAN(to_date('

36、01/04/2007','dd/mm/yyyy'),PARTITION transDate_p3 VALUES LESS THAN(to_date('01/07/2007','dd/mm/yyyy'),PARTITION transDate_p4 VALUES LESS THAN(to_date('01/10/2007','dd/mm/yyyy'),PARTITION transDate_p5 VALUES LESS THAN(to_date('01/01/2008','dd/mm/

37、yyyy'),PARTITION transDate_p6 VALUES LESS THAN(to_date('01/04/2008','dd/mm/yyyy'),PARTITION transDate_p7 VALUES LESS THAN(to_date('01/07/2008','dd/mm/yyyy'),PARTITION transDate_p8 VALUES LESS THAN(to_date('01/10/2008','dd/mm/yyyy'),PARTITION transD

38、ate_p9 VALUES LESS THAN(to_date('01/01/2009','dd/mm/yyyy'),PARTITION transDate_p10 VALUES LESS THAN(to_date('01/04/2009','dd/mm/yyyy'),PARTITION transDate_p11 VALUES LESS THAN(to_date('01/07/2009','dd/mm/yyyy'),PARTITION transDate_p12 VALUES LESS THAN(

39、maxvalue);/表已創建-為transInfo表添加表約束ALTER TABLE transInfoADD CONSTRAINT FK_cardID FOREIGN KEY(cardID) REFERENCES cardIofo(cardID)ADD CONSTRAINT CK_transType CHECK(transType IN ('存入','支取')ADD CONSTRAINT CK_transMoney CHECK(transMoney>0)MODIFY(transDate DEFAULT sysdate);/表已更改-創建 userInf

40、o表視圖CREATE OR REPLACE VIEW userInfo_vwASSELECT customerID as 用戶編號,customerName as 用戶名稱,PID as 身份證號,telephone as 聯系電話,address as 家庭住址 FROM userInfo;-創建 cardInfo表視圖CREATE OR REPLACE VIEW cardInfo_vw ASSELECT cardID as 銀行卡號,curType as 貨幣類型,savingTYpe as 存款類型,openDate as 開戶日期,openMoney as 開戶金額,balance a

41、s 余額,pass as 密碼,IsReportLoss as 是否掛失,customerID as 用戶編號 FROM cardInfo;-創建 transInfo表視圖CREATE OR REPLACE VIEW transInfo_vw ASselect transDate as 交易日期,cardID as 卡號,transType as 交易類型,transMoney as 交易金額,remark as 備注 FROM transInfo;-創建 查詢掛失的客戶信息視圖CREATE OR REPLACE VIEW userInfo_IsReportLoss_vw ASselect u

42、.customerID as 用戶編號,u.customerName as 開戶名,u.pid as 身份證號,u.telephone as 聯系電話,u.address as 家庭地址 FROM userInfo u INNER JOIN cardInfo c ON u.customerID=c.customerID WHERE IsReportLoss='是'-創建 查詢本周開戶的卡號 顯示相關信息視圖CREATE OR REPLACE VIEW query_week_information_vw ASSELECT cardID as 卡號,curType as 貨幣類型,

43、savingType as 存款類型,openDate as 開戶日期,openMoney as 開戶金額,balance as 余額,pass as 密碼,IsReportLoss as 是否掛失,customerID as 用戶編號FROM cardInfo WHERE openDate BETWEEN TRUNC(sysdate,'day') AND sysdate;-創建 查詢本月交易金額最高的卡號 的視圖CREATE OR REPLACE VIEW top_balance_vw ASSELECT DISTINCT cardID as 交易最高的卡號,transMone

44、y as 交易金額 FROM transInfo WHERE transMoney=(SELECT Max(transMoney) FROM transInfo);- 查看視圖 -select * from userInfo_vw; -userInfo表視圖select * from cardInfo_vw; -cardInfo表視圖select * from transInfo_vw; -transInfo表視圖select * from userInfo_IsReportLoss_vw; -查詢掛失的客戶信息視圖select * from query_week_information_vw

45、; -查詢本周開戶的卡號select * from top_balance_vw; -查詢本月交易金額最高的卡號/*select u.customerName as 客戶名字,c.balance as 余額,t.transMoney as 交易金額 from userInfo u ,cardInfo c ,transInfo t where u.customerName='張三'and u.customerid=c.customerid and c.cardid=t.cardid;select u.customerName as 客戶名稱,c.balance as 余額 fro

46、m userInfo u INNER JOIN cardInfo c on u.customername='張三'and u.customerid=c.customerid;*/-不允許更新cardInfo表的cardID列-不能更新卡號的觸發器create or replace trigger trg_cardInfo_cardID_notUpdatebefore update of cardIDon cardInfofor each rowbeginraise_application_error(-20001,'此列不允許修改!');end;-創建觸發器實現

47、交易操作create or replace trigger trig_transbefore insert or update on transinfofor each rowdeclare my_balance number;rate_exception exception;begin select balance into my_balance from cardinfo where cardid=:new.cardid; if :new.transtype='支取' then if my_balance<:new.transmoney-1 thendbms_outp

48、ut.put_line('對不起,您的余額不足!'); return;elsif my_balance>:new.transmoney-1 then update cardinfo set balance=balance-:new.transmoney where cardId=:new.cardId; end if;elsif :new.transtype='存入' thenupdate cardinfo set balance=balance+:new.transmoney where cardid=:new.cardId; end if; dbms_

49、output.put_line('交易成功!'); exception when rate_exception then raise_application_error(-20001,'交易失敗'); end;select * from cardInfo_vw;-插入交易數據 自動觸發一系列操作insert into transInfo (transdate,cardID,transType,transMoney) values(sysdate,'1010 3576 8888 6666','存入',1000);commit;sel

50、ect * from cardInfo_vw;select * from transInfo_vw;create or replace TRIGGER trg_cardIofo_card_notUpdateBEFORE UPDATE OF cardIDON cardIofoFOR EACH ROW BEGINRAISE_APPLICATION_ERROR(-20001,'賬號不允許修改');END;CREATE OR REPLACE FUNCTION random_cardIdRETURN VARCHAR2AScard_id VARCHAR2(20):='1010 35

51、76'tem CHAR(5);re_card_id_count NUMBER:=0;BEGINLOOPtem:=to_char(dbms_random.value(1000,9999),'0000');card_id:=card_id|tem;tem:=to_char(dbms_random.value(1000,9999),'0000');card_id:=card_id|tem;SELECT COUNT(*) INTO re_card_id_count FROM cardInfo WHERE cardID=card_id;EXIT WHEN re_c

52、ard_id_count=0;END LOOP;RETURN card_id;END;開戶過程:CREATE OR REPLACE procedure proc_openUser( uname varchar2, -開戶的姓名 p_id varchar2, -身份證 tel varchar2, -電話號碼 address varchar2, -地址 savingtype varchar2, -存款類型 curType varchar2, -貨幣類型 openMoney number, -開戶金額 pass varchar2 -開戶密碼)ascid varchar2(20); -卡號custom

53、er_id number; -顧客IDi NUMBER;c NUMBER;Begin-調用函數生成卡號cid:=random_cardId;-查詢此人是否在此行開過戶select count(*) into i from userinfo where PID=p_id;-查詢卡號是否應該有了select count(*) into c from cardinfo where cardID=cid;if i=0 thenif c=0 thenInsert intouser Info values(customerid_seq.nextval,uname,p_id,tel,address);-根據

54、身份證號獲取顧客編號select customerId into customer_id from userInfo where PID=p_id;insert into cardInfo(cardId,curType,Savingtype,Openmoney,balance,pass,customerId) values(cid,curType,savingType,openMoney,openMoney,pass,customer_id);DBMS_OUTPUT.PUT_LINE('您已成功開戶!');DBMS_OUTPUT.PUT_LINE('您的卡號為:'

55、;|cid);elsif c>0 thendbms_output.put_line('開戶失敗!');end if; elsif i>0 thendbms_output.put_line('此身份證已開有帳號!');END IF;EXCEPTIONwhen others thendbms_output.put_line('開戶失敗!');end;create or replace procedure proc_updateUserPass(temp_cardid varchar2, -卡號oldpass varchar2, -舊密碼newpass varchar2 -新密碼 ) as i number;pass_i VARCHAR2(6);begin select count(*) into i from cardInfo where cardID=temp_cardid; select pass into pass

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論