




已阅读5页,还剩46页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课程设计说明书目 录摘 要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附录22II摘 要 随着计算机的飞速发展及应用领域的扩大,特别是计算机网络和电子商务的发展,极大的改变了商业银行传统的经营模式。能够为客户提供方便、快捷、安全的服务,也能够有效的降低银行的营运成本,这是银行存储系统追求的目标。目前,对于现代化银行运营的要求是客户可以实现方便安全的业务交易,银行职员可以进行高效合理的工作管理,实现银行业务电子化。方便用户快速的进行存款、取款、修改密码以及完成一些转账的交易,大大提高办公效率,能够及时、准确、有效的帮用户办理各种繁琐的手续,也减缓了银行工作人员的压力。491、 设计银行管理系统结构图1.1系统结构图银行系统信息查询财务管理账户管理图1.1系统结构图2、 银行管理系统E-R图和表结构2.1E-R图身份证号开户开户信息表住址联系电话开户名联系电话开户名身份证号 图2.1开户开户金额是否挂失用户编号密码开户日期货币种类余额卡号存款类型银行信息表 图2.2卡号交易金额交易日期交易类型交易信息表交易2.2表结构 通过对银行管理系统的需求分析,应该为该系统设计3个表,分别为用户信息表、银行卡信息表和交易信息表。 用户信息表用于存储用户的基本信息,包括用户的编号、开户名、身份证号、联系电话和家庭住址等信息 表2.1 用户信息表字段名称字段描述数据类型长度约束customer用户编号Number4主键customer开户名Varhcar220必填PID身份证号Varchar218必填telephone联系电话Varchar213必填Address家庭地址Varchar250无 银行卡信息表用于存储银行卡相关的信息主要包括卡号、存储的货币类型,存款方式,开户时间,开户金额,余额、银行卡密码、是否挂失和用户编号等信息, 表2.2银行卡信息表字段名称字段描述数据类型长度约束cardID卡号Varchar220主键curType货币种类Varhcar210必填SavingType存款类型Varchar28非空Opendate开户日期DATETIME必填openmoney开户金额Number8必填Balance帐户余额Number8必填Isreportloss是否挂失Varchar22必填Customer开户编号Varchar4外键 交易信息表用于存储用户的交易记录,主要包括交易日期,卡号、交易类型,交易金额等信息。 表2.3交易信息表字段名称字段描述数据类型长度属性Transdate交易日期DatetimePKcardID卡号Varhcar220非空transTYPE交易类型VARCHAR24非空transMoney交易金额NUMBER4非空remark备注VARCHAR250非空 三、创建系统数据表3.1创建表空间和用户 使用system用户连接数据库后,创建表空间space_zqp,指定数据文件为D:Bank.dbf,代码如下图: 图3.1表空间和用户3.2创建用户信息表并添加约束用户信息表保存了用户的基本信息,该表的创建语句如下,CREATE TABLE 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(customerID)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-9ORLENGTH(telephone)=13);-创建可以自动生成自增主列的序列 customerid_seqCREATE SEQUENCE customerid_seqSTART WITH 1INCREMENT BY 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),开户金额(openmoney),余额(balance),密码(pass),是否挂失(isREPORTLOSS)和用户编号(customerID)的信息。其中,cardID为主键,必须为1010 3756 xxxx xxxx的格式;CURTYPE默认为RMB,openmoney必须不能低于一元;balance也必须不能低于一元;pass默认为;ISREPORTLOSS的值必须是“是/否”中之一,默认为否;customerID为外键,引用userInfo表中的customerID列。图3.3 3.4创建交易信息表 交易信息表中包含了五个字段,分别为transdate(交易日期),cardID(卡号)、TRANSTYPE(交易类型),transmoney(交易金额)和remark(备注)。其中,transdate默认为系统当前日期;cardid位外键,引用cardinfo表中的cardid列,可重复;transtype只能是“存入/取出”之一;transmoney必须大于0.图3.4交易信息表四、模拟常规业务操作4.1建立更新账号触发器结果如下:图4.1创建before update触发器4.2存取款交易操作 当用户办理取款或存款业务时,不仅需要向交易信息表中添加一条交易记录,还需要修改当前账户中的余额,如果办理取款业务,如果将当前账户总的余额减去支取余额,如果办理托管业务,多叫当前账户中的金额加上存款金额。 在交易信息表中包含一个名为transtype的字段,该字段用于表示交易类型,取值范围必须是存入或者自取,因此可以为transINFO表创建BEFORE INSERTR触发器。根据要办理里的交易类型,判断出当前的交易类型,如果transtype字段值为“支取”,则表示要办理取款业务,检测当前余额是否大于或等于要支取的金额,如果满足条件,则要修改cardinfo表中的balance字段值,将该字段值减去交易金额(transmoney),如果transtype字段值为“存入”,则表示要办理存款业务,修改cardinfo表中的balance字段值,将该值加上交易金额(transmoney)。代码如下: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 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_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用户开户 根据身份证号查询是否在该行开过户,为万无一失,还需要查询生成的卡号是否已经被使用,如果这两个条件都符合要求(此人从未在该行开过户,生成的卡号也无人使用),则向userinfo表中插入开户人的基本信息记录,并根据开户人的身份证号获取开户人的编号,从而向cardinfo表中插入开户人的基本信息记录,同时还需要将生成的卡号显示给开户人。如果收到卡号已经被使用,得提醒用户开户失败;如果当前开户人已经在此行开过户,则提示用户此身份证已有账号。 结果如下图:图4.24.4更改密码 一个银行账号对应一个密码,因此当用户输入的卡号密码相对应时,可以为该银行卡设置新的密码,代码: create or replace procedure 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(此卡号不存在!);elsif i0 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账号挂失 当用户的银行卡丢失后,可以对该卡进行挂失,银行管理系统需要验证用户的真实性,当用户输入银行卡号和密码相对应,才可以对该卡进行挂失操作,即修改cardinfo表中的IsreportLOSS列为“是”,否则提示“无权挂失”。结果如图: 图4.34.6余额查询 用户可以使用银行管理系统,办理余额查询等业务,系统要求用户输入银行卡账号和密码,当用户输入的账号和密码都合法时,系统就查询该用户的账户余额,否则将提示用户“账号或密码错误!”,代码:CREATE OR REPLACE procedure pro_query_balance(card_id varchar2, -帐户card_pass varchar2) -密码asi NUMBER:=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(你帐号的余额为:|user_balance);end if;exceptionwhen not_data_found thendbms_output.put_line(帐号或密码错误!);end;4.7转账业务设置 自助银行管理系统办理转账业务时,要求用户输入正确的用于转账的卡号和密码,以及获得转账的卡号和转账金额,系统将根据用户输入的卡号和密码,检测该银行卡是否存在,如果存在,则判断该银行卡余额是否大于要转账的余额;如果大于,则向表中插入两条交易记录,一条支取的记录,一条为存入的记录,并提示用户转账成功;如果用户输入的卡号和密码不正确,则提示“你的卡号或密码有误!”。4.8银行盈利结算 银行的管理人员可以统计银行的资金流通余额和盈利结算,资金流动金额等于总存入-总支数金额;盈利结算,等于总支出金额乘以8%-总存入金额乘以3%,代码如图:图4.44.9撤户操作 当用户不再需要使用某张银行卡时,可去银行办理撤户操作,撤户操作需要用户输入正确的卡号和密码,系统将根据用户输入的数据对该银行卡进行验证,如果该银行卡存在,都需要将卡上的余额全部取出,并删除该卡在cardinfo表中的记录,以及在transinfo表中所有的交易记录。代码如下图图4.5五、总 结 通过此次课程设计,使我更加扎实的掌握了有关数据库方面的知识,在设计过程中虽然遇到了一些问题,但经过一次又一次的思考,一遍又一遍的检查终于找出了原因所在,也暴露出了前期我在这方面的知识欠缺和经验不足。实践出真知,通过亲自动手制作,使我们掌握的知识不再是纸上谈兵。在课程设计过程中,我们不断发现错误,不断改正,不断领悟,不断获取。最终的检测调试环节,本身就是在践行“过而能改,善莫大焉”的知行观。这次课程设计终于顺利完成了,在设计中遇到了很多问题,最后在老师的指导下,终于游逆而解。在今后社会的发展和学习实践过程中,一定要不懈努力,不能遇到问题就想到要退缩,一定要不厌其烦的发现问题所在,然后一一进行解决,只有这样,才能成功的做成想做的事,才能在今后的道路上劈荆斩棘,而不是知难而退,那样永远不可能收获成功,收获喜悦,也永远不可能得到社会及他人对你的认可!参考文献1郝安林,Oracle 11g基础教程与实验指导,清华大学出版社 2王珊,数据库系统概论,高等教育出版社3王霓虹,数据库系统原理 ,哈尔滨工业出版社(十二五规划教材)4李建中,数据库系统原理,电子工业出版社(原理)5Stephens著,数据库设计,机械工业出版社6李丙洋.涂抹oracle-三思笔记之一步一步学oracleM中国水利水电出版社,2010.17KarenMorton.OracleSQL高级编程M.人民邮电出版社,2011.118梁敬彬,梁敬弘.收获不止oracleM.电子工业出版社,2013.59盖国强.循序渐进oracle数据库管理、优化与备份恢复M.人民邮电出版社,2011.810LanAbramson,MicheaelAbbey,MichaelJ.Corey,窦朝辉.oracledatabase11g:初学者指南M.清华大学出版社,2010-01附录程序源代码:CREATE TABLESPACE space_zqpDATAFILE D:Bank.dbf SIZE 50MAUTOEXTEND ON NEXT 5M MAXSIZE 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(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 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-9ORLENGTH(telephone)=13);/表已更改-创建可以自动生成自增主列的序列 customerid_seqCREATE SEQUENCE customerid_seqSTART WITH 1INCREMENT BY 1NOCACHE;/序列已创建CREATE TABLE cardIofo(cardID VARCHAR2(20) 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 openDate_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(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/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 openDate_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, ,xxxxxxxxxx )=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(IsReportLoss IN (是,否)ADD CONSTRAINT FK_customerID FOREIGN KEY(customerID) REFERENCES userInfo(customerID)MODIFY(curType DEFAULT RMB)MODIFY(openDate DEFAULT sysdate)MODIFY(pass DEFAULT )MODIFY(IsReportLoss DEFAULT 否);/表已更改CREATE TABLE transInfo(transDate DATE NOT 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(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/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 transDate_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(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(transMoney0)MODIFY(transDate DEFAULT sysdate);/表已更改-创建 userInfo表视图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 as 余额,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.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 货币类型,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 交易最高的卡号,transMoney 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; -查询本周开户的卡号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 余额 from 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;-创建触发器实现交易操作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 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_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;select * 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 3576;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_card_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); -卡号customer_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);-根据身份证号获取顾客编号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(您的卡号为:|cid);elsif c0 thendbms_output.put_line(开户失败!);end if; elsif i0 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_i from cardI
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- java打饭等饭数组面试题及答案
- java基础重要知识点面试题及答案
- 冰雪产业面试题及答案
- 兵团总部面试题及答案
- 蘑菇中毒测试题及答案
- java面试题及答案100题真题
- 摄影构图考试题及答案
- 海运船员考试题及答案
- 中医内科眩晕症型
- 终止妊娠药品培训
- 2025年高考全国一卷写作范文4篇
- 坚持严格阵地管理制度
- 2025年广西公需科目答案03
- 2025届江苏省徐州市名校七下数学期末达标检测试题含解析
- 2025年山东夏季高中学业水平合格考模拟生物试卷(含答案)
- 大连海事大学育鲲轮电机员培训课件详解
- GB/T 45577-2025数据安全技术数据安全风险评估方法
- IgG4肾病的诊断和治疗
- 中国啤酒篮行业市场发展前景及发展趋势与投资战略研究报告2025-2028版
- 2025年中国直接结合镁铬砖数据监测研究报告
- 会议流程规划能力试题及答案
评论
0/150
提交评论