网上商城购物系统(2)
来源:互联网 发布:qt5串口编程详解 编辑:程序博客网 时间:2024/04/30 09:24
详细内容请看☟☟☟
网上商城购物系统(1)
这是前面的完整的语句
-----------------------------创建表-----------------------------------------------------------------------------------------------tb_province表(省份数据字典)CREATE TABLE tb_province ( provinceID NUMBER NOT NULL PRIMARY KEY, provinceName VARCHAR2(30) NOT NULL );--自动增量CREATE sequence province_seq increment BY 1 start with 1001 minvalue 1001 maxvalue 1999;CREATE OR REPLACE TRIGGER province_tri before INSERT ON tb_province FOR EACH row BEGIN SELECT province_seq.Nextval INTO:new.provinceID FROM sys.dual;END;INSERT INTO tb_province (provinceName )VALUES ('123' );INSERT INTO tb_province (provinceName )VALUES ('123345' );-----------------------------------------------------------tb_city表(城市数据字典)CREATE TABLE tb_city ( cityID NUMBER NOT NULL PRIMARY KEY , --自动增量 provinceID NUMBER NOT NULL , cityName VARCHAR2(30) NOT NULL, FOREIGN KEY(provinceID) REFERENCES tb_province(provinceID) );CREATE sequence city_seq increment BY 1 start with 2001 minvalue 2001 maxvalue 2999;CREATE OR REPLACE TRIGGER city_tri before INSERT ON tb_city FOR EACH row BEGIN SELECT city_seq.Nextval INTO:new.cityID FROM sys.dual;END;-------------------------------------------------------------tb_user表(用户信息表)CREATE TABLE tb_user ( userID NUMBER NOT NULL PRIMARY KEY ,--自动增量 name VARCHAR2(20) NOT NULL UNIQUE, password VARCHAR2(30) NOT NULL, email VARCHAR2(30), provinceID NUMBER, cityID NUMBER , telephone CHAR(11), sex CHAR(3) DEFAULT '男', age NUMBER, birthday DATE, money NUMBER DEFAULT 0, photo VARCHAR2(500), dsp VARCHAR2(200), qq VARCHAR2(15), msn VARCHAR2(50), loveBook VARCHAR2(200), loveMusic VARCHAR2(200), loveMovie VARCHAR2(200), loveSport VARCHAR2(200), loveGame VARCHAR2(200), FOREIGN KEY(cityID) REFERENCES tb_city(cityID) );CREATE sequence user_seq increment BY 1 start with 3001 minvalue 3001 maxvalue 3999;CREATE OR REPLACE TRIGGER user_tri before INSERT ON tb_user FOR EACH row BEGIN SELECT user_seq.Nextval INTO:new.userID FROM sys.dual;END;-----------------------------------------------------tb_productType表(商品类型表)CREATE TABLE tb_productType ( productTypeID NUMBER NOT NULL PRIMARY KEY ,--自动增加(1) productTypeName VARCHAR2(30) NOT NULL );CREATE sequence productType_seq increment BY 1 start with 4001 minvalue 4001 maxvalue 4999;CREATE OR REPLACE TRIGGER productType_tri before INSERT ON tb_productType FOR EACH row BEGIN SELECT productType_seq.Nextval INTO:new.productTypeID FROM sys.dual;END;----------------------------------------------------------tb_product表(商品信息表)CREATE TABLE tb_product ( productID NUMBER NOT NULL PRIMARY KEY ,--自动增加(1) userID NUMBER NOT NULL , productName VARCHAR2(50) NOT NULL, typeID NUMBER NOT NULL , price NUMBER NOT NULL, photo VARCHAR2(50), information VARCHAR2(200), FOREIGN KEY(userID) REFERENCES tb_user(userID), FOREIGN KEY(TypeID) REFERENCES tb_productType(productTypeID) );CREATE sequence product_seq increment BY 1 start with 5001 minvalue 5001 maxvalue 5999;CREATE OR REPLACE TRIGGER product_tri before INSERT ON tb_product FOR EACH row BEGIN SELECT product_seq.Nextval INTO:new.productID FROM sys.dual;END;-----------------------------------------------------tb_productSize表(商品型号表)CREATE TABLE tb_productSize ( productSizeID NUMBER NOT NULL PRIMARY KEY ,--自动递增(1) productSize VARCHAR2(20) NOT NULL, productID NUMBER NOT NULL , FOREIGN KEY(productID) REFERENCES tb_product(productID) );CREATE sequence productSize_seq increment BY 1 start with 6001 minvalue 6001 maxvalue 6999;CREATE OR REPLACE TRIGGER productSize_tri before INSERT ON tb_productSize FOR EACH row BEGIN SELECT productSize_seq.Nextval INTO:new.productSizeID FROM sys.dual;END;--tb_productColor表(商品颜色表)CREATE TABLE tb_productColor ( productColorID NUMBER NOT NULL PRIMARY KEY,--自动增量(1) productColor VARCHAR2(20) NOT NULL, stockpile NUMBER NOT NULL, productSizeID NUMBER NOT NULL , FOREIGN KEY(productSizeID) REFERENCES tb_productSize(productSizeID) );CREATE sequence productColor_seq increment BY 1 start with 7001 minvalue 7001 maxvalue 7999;CREATE OR REPLACE TRIGGER productColor_tri before INSERT ON tb_productColor FOR EACH row BEGIN SELECT productColor_seq.Nextval INTO:new.productColorID FROM sys.dual;END;--------------------------------------------------------------tb_order表(订单表)CREATE TABLE tb_order ( orderID NUMBER NOT NULL PRIMARY KEY ,--自动增加 toID NUMBER NOT NULL , colorID NUMBER NOT NULL , productID NUMBER NOT NULL , address VARCHAR2(100) NOT NULL, telephone CHAR(11) NOT NULL, orderState NUMBER NOT NULL, COUNT NUMBER NOT NULL, price NUMBER NOT NULL, orderDate DATE NOT NULL, consignmentDate DATE NOT NULL, FOREIGN KEY(toid) REFERENCES tb_user(userID), FOREIGN KEY(colorid) REFERENCES TB_PRODUCTCOLOR(productColorID) , FOREIGN KEY(productID) REFERENCES TB_PRODUCT(productID) );CREATE sequence order_seq increment BY 1 start with 8001 minvalue 8001 maxvalue 8999;CREATE OR REPLACE TRIGGER order_tri before INSERT ON tb_order FOR EACH row BEGIN SELECT order_seq.Nextval INTO:new.orderID FROM sys.dual;END;---------------------------------------------------tb_userAccount表(用户资金流水表)CREATE TABLE tb_userAccount ( userAccountID NUMBER NOT NULL PRIMARY KEY ,--自动递增(1) userID NUMBER NOT NULL , orderID NUMBER NOT NULL , type NUMBER NOT NULL, TIME DATE NOT NULL, FOREIGN KEY(userID) REFERENCES tb_user(userID), FOREIGN KEY(orderID) REFERENCES tb_order(orderID) );CREATE sequence userAccount_seq increment BY 1 start with 9001 minvalue 9001 maxvalue 9999;CREATE OR REPLACE TRIGGER userAccount_tri before INSERT ON tb_userAccount FOR EACH row BEGIN SELECT userAccount_seq.Nextval INTO:new.userAccountID FROM sys.dual;END;-------------------------------------------------------------tb_review表(评论表)CREATE TABLE tb_review ( reviewID NUMBER NOT NULL PRIMARY KEY ,--自动递增(1) review VARCHAR2(200) NOT NULL, isReply NUMBER DEFAULT 0 NOT NULL CHECK(isReply=0 OR isReply =1), isDel NUMBER DEFAULT 0 NOT NULL CHECK(isDel =0 OR isDel =1), senderID NUMBER NOT NULL , productID NUMBER NOT NULL, addTime DATE NOT NULL, replyID NUMBER , FOREIGN KEY(senderID) REFERENCES tb_user(userID), FOREIGN KEY(productID ) REFERENCES tb_product(productID) );CREATE sequence review_seq increment BY 1 start with 33001 minvalue 33001 maxvalue 33999;CREATE OR REPLACE TRIGGER review_tri before INSERT ON tb_review FOR EACH row BEGIN SELECT review_seq.Nextval INTO:new.reviewID FROM sys.dual;END;--------------------------插入数据-----------------------------------------------/*基础数据(商品类型+省份+城市)添加*//*tb_productType表添加商品类型*/INSERTINTO tb_productType ( productTypeName ) VALUES ( '小米6手机' );INSERT INTO tb_productType (productTypeName ) VALUES ('小米1手机' );INSERT INTO tb_productType (productTypeName ) VALUES ('小米2手机' );INSERT INTO tb_productType (productTypeName ) VALUES ('小米3手机' );INSERT INTO tb_productType (productTypeName ) VALUES ('小米4手机' );INSERT INTO tb_productType (productTypeName ) VALUES ('小米5手机' );/*tb_province表添加省份名称*/INSERT INTO tb_province (provinceName ) VALUES ('山东' );INSERT INTO tb_province (provinceName ) VALUES ('山西' );INSERT INTO tb_province (provinceName ) VALUES ('辽宁' );INSERT INTO tb_province (provinceName ) VALUES ('四川' );INSERT INTO tb_province (provinceName ) VALUES ('河南' );/*tb_city表给山东省添加城市名称*/INSERTINTO tb_city ( provinceID, cityName ) VALUES ( 1006, '济南' );INSERT INTO tb_city (provinceID,cityName ) VALUES (1006,'青岛' );INSERT INTO tb_city (provinceID,cityName ) VALUES (1006,'潍坊' );/*用户数据(注册+信息完善)添加*//*tb_user表添加用户信息*/INSERTINTO tb_user VALUES ( NULL, '丁兆元', '123', '123@123.com', 1006,2013, '12345678', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL );INSERTINTO tb_user VALUES ( NULL, '李一', '123', '12332@12333.com', 1006,2014, '123', '男', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL );INSERTINTO tb_user VALUES ( NULL, '李二', '123', '1332@2333.com', 1008, NULL, '1232323', '男', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL );/*商品信息(商品信息+型号+颜色)添加*//*tb_product表添加商品信息*/INSERTINTO tb_product VALUES ( NULL, 3001, '小米6手机', 4007,2399, '网上', '双摄' );INSERT INTO tb_product VALUES (NULL,3001,'小米5手机',4012,1999,'网上商城','窄边框' );INSERT INTO tb_product VALUES (NULL,3002,'小米6手机',4007,2399,'小米商城','双摄' );/*tb_productSize表添加商品型号*/INSERT INTO tb_productSize VALUES (1,'miui6',5001 );INSERT INTO tb_productSize VALUES (2,'miui5',5002 );INSERT INTO tb_productSize VALUES (3,'miui6',5003 );/*tb_productColor表添加商品型号*/INSERTINTO tb_productColor VALUES ( 1, '白', 300,6001 );INSERT INTO tb_productColor VALUES (2,'黑',600,6002 );INSERT INTO tb_productColor VALUES (2,'蓝',11,6003 );--tb_order 订单表--tb_useraccount 用户资金流水表(只允许新增记录,不允许修改、删除)--tb_review 评论表-------------------------------操作-------------------------------------------/*删除用户****/SELECT *FROM tb_user;DECLARE t_username VARCHAR2(20);BEGIN t_username:='&请输入要删除的用户名'; DELETE FROM tb_user WHERE name=t_username;END;/*商品信息查询*//*单表查询*//*查询tb_product表中商品id为的商品信息*/DECLARE pid tb_product.productid%type; pro tb_product%rowtype;BEGIN pid:=&请输入商品id; SELECT * INTO pro FROM tb_product WHERE productid=pid; dbms_output.put_line('商品id:'||pro.productid||' 卖家id:'|| pro.userid||' 商品名:'||pro.productname ||' 商品类型id:'||pro.typeid||' 商品价格:'|| pro.price||' 商品图片路径:'||pro.photo ||' 商品简介:'||pro.information );EXCEPTIONWHEN no_data_found THEN dbms_output.put_line('没有发现您要找的数据!');WHEN OTHERS THEN dbms_output.put_line('其他异常!');END;/*查询tb_productSize表中商品id为的型号信息*/DECLARE pid tb_productSize.productid%type; pro tb_productSize%rowtype;BEGIN pid:=&请输入商品id; SELECT * INTO pro FROM tb_productSize WHERE productid=pid; dbms_output.put_line('商品型号id:'||pro.productSizeID ||' 商品型号:'||pro.productSize||' 商品id:'||pro.productID );EXCEPTIONWHEN no_data_found THEN dbms_output.put_line('没有发现您要找的数据!');WHEN OTHERS THEN dbms_output.put_line('其他异常!');END;/*查询tb_productColor表中商品型号id为、、的颜色与库存信息*/DECLARE pid tb_productColor.productsizeid%type; pro tb_productColor%rowtype;BEGIN pid:=&请输入商品型号id; SELECT * INTO pro FROM tb_productColor WHERE productsizeid=pid; dbms_output.put_line('商品颜色id:'||pro.productColorID ||' 商品颜色:'||pro.productColor||' 商品库存:'|| pro.stockpile||' 商品型号id:'||pro.productSizeID );EXCEPTIONWHEN no_data_found THEN dbms_output.put_line('没有发现您要找的数据!');WHEN OTHERS THEN dbms_output.put_line('其他异常!');END;/*多表查询*//*用户在商城以商品类型 查询一件商品的名称*/DECLARE name VARCHAR2(30); pname VARCHAR2(50); CURSOR cur1(typename VARCHAR2) IS SELECT productname FROM tb_product WHERE typeid IN ( SELECT productTypeID FROM tb_productType WHERE productTypeName=typename );BEGIN name:='&商品类型'; OPEN cur1(name); LOOP FETCH cur1 INTO pname; EXIT WHEN cur1%notfound; dbms_output.put_line('商品名称:'||pname); END LOOP; CLOSE cur1;END;/*用户在商城以商品名称查询一件商品的所有信息*//*本来dzy用户没有创建视图的权限,在system用户下对他授权 grant create view to dzy;*/CREATE VIEW t_mation ASSELECT productcolorid, productcolor, stockpile, c.productsizeid, productsize, s.productid, userid, productname, typeid, price, photo, informationFROM tb_productcolor cJOIN tb_productsize sON c.productsizeid=s.productsizeidJOIN tb_product pON p.productid=s.productid;DECLARE m t_mation%rowtype; pname VARCHAR2(50); CURSOR cur_t (product_name IN VARCHAR2) IS SELECT * FROM t_mation WHERE productname=product_name ;BEGIN pname:='&商品名称'; OPEN cur_t(pname); LOOP FETCH cur_t INTO m; EXIT WHEN cur_t%notfound; dbms_output.put_line( '商品id:'||m.productid|| ' 商品名字:'||m.productname|| ' 商品颜色id:'||m.productcolorid|| ' 商品颜色:'||m.productcolor|| ' 商品库存:'||m.stockpile|| ' 商品型号id:'||m.productsizeid|| ' 商品型号:'||m.productsize|| ' 商品卖家id:'||m.userid|| ' 商品类型id:'||m.typeid|| ' 商品价格:'||m.price|| ' 商品图片路径:'||m.photo|| ' 商品简介:'||m.information ); END LOOP; CLOSE cur_t;EXCEPTIONWHEN no_data_found THEN dbms_output.put_line('没有发现您要找的数据!');WHEN OTHERS THEN dbms_output.put_line('其他异常!');END;/*用户信息查询*//*用户在商城可以查询已知用户(或卖家)的基本信息*/DECLARE pid tb_user.userID%type; us tb_user%rowtype;BEGIN pid:=&请输入用户id; SELECT * INTO us FROM tb_user WHERE userID=pid; dbms_output.put_line( '用户id:'||us.userid|| ' 用户名:'||us.name|| ' 邮箱:'||us.email|| ' 所在省份id:'||us.provinceid|| ' 所在城市id:'||us.cityid|| ' 手机号:'||us.telephone|| ' 性别:'||us.sex|| ' 年龄:'||us.age|| ' 生日:'||us.birthday );EXCEPTIONWHEN no_data_found THEN dbms_output.put_line('没有发现您要找的数据!');WHEN OTHERS THEN dbms_output.put_line('其他异常!');END;--------------------------------------------------------------------------------/*用户下订单并确认付款(应用事务)*/-------------------------------------------------/*用户***想要购买卖家***的产品颜色-大小-产品名*/DECLARE o_userid NUMBER; /*定义变量,用于存储流水表的用户(买家)ID*/ o_productcolorid NUMBER; /*定义变量,用于存储本次订单的颜色ID*/ o_productid NUMBER; /*定义变量,用于存储本次订单的物品ID*/ o_count NUMBER; o_stockpile NUMBER; o_price NUMBER; /*定义变量,用于存储本次订单的物品单价*/ o_money NUMBER; o_phone CHAR(11); n NUMBER; --o_toid number; /*定义变量,用于存储本次订单的买家ID*/BEGIN o_userid:='&买家id' ; /*用户****下订单*/ o_productcolorid:='&颜色id' ; o_productid :='&商品id'; o_count :='&数量'; SELECT price INTO o_price FROM tb_product WHERE productID=o_productid ; SELECT TELEPHONE INTO O_PHONE FROM TB_USER WHERE USERID=O_USERID; INSERT INTO tb_order VALUES ( 1, o_userid, o_productcolorid, o_productid, '默认地址', o_phone, 0, o_count, (o_count*o_price), sysdate, (sysdate+3) ); /*用户****将订单信息填入到tb_order表中*/ /*orderState订单状态为用户选择填入下订单 0表示"确认订单"*/ SELECT stockpile INTO o_stockpile FROM tb_productColor WHERE productColorID=o_productcolorid; IF o_stockpile >o_count THEN BEGIN UPDATE tb_productColor SET stockpile=stockpile-o_count /*下订单后减少商品库存*/ WHERE productColorID=o_productcolorid; END; ELSE raise_application_error(-20002, '库存不足'); END IF; SELECT money INTO o_money FROM tb_user WHERE userID=o_userid; IF o_money>o_count*o_price THEN BEGIN UPDATE tb_user SET money=money-o_count*o_price /*确认付款后减少用户余额*/ WHERE userID=o_userid; END; ELSE raise_application_error(-20002, '账户余额不足'); END IF; SELECT order_seq.currval INTO n FROM dual; UPDATE tb_order SET orderState=1 /*将用户付款的订单状态改为已付款 1代表"已付款"*/ WHERE orderID=n; INSERT INTO tb_useraccount VALUES (1,o_userid,n,o_productcolorid,sysdate ); /*用户账户上的钱转账完成后建立用户资金流水表一条买家购买商品支出记录*/ dbms_output.put_line('操作成功'); COMMIT;EXCEPTIONWHEN no_data_found THEN BEGIN dbms_output.put_line('数据未找到,操作失败'); ROLLBACK; END;WHEN OTHERS THEN BEGIN dbms_output.put_line('操作失败'); ROLLBACK; END;END;/*卖家对订单信息进行修改*/--------------------------------------------------------/*假设买家***想修改商品的颜色,则需要应用事务,对相应颜色的库存进行修改*//*修改信息是各项信息均为可选择项,如不想修改某项信息,则选择以前的选项,但是会将数据重复的修改一次,即用相同的数据来覆盖之前的数据*//*除此之外卖家发货后可将订单状态改为发货*/DECLARE d_orderid NUMBER; d_address VARCHAR2(100); d_telephone CHAR(11); d_orderState NUMBER; d_colorid NUMBER; d_price NUMBER; d_count NUMBER; d_price_befo NUMBER; old_productColorID NUMBER;BEGIN d_orderid :=&订单id; /*修改tb_order表中的送货地址*/ d_address :='&地址'; UPDATE tb_order SET address=d_address WHERE orderID=d_orderid; dbms_output.put_line('送货地址已修改'); /*修改tb_order表中的联系方式*/ d_telephone:='&联系方式'; UPDATE tb_order SET telephone=d_telephone WHERE orderID=d_orderid; dbms_output.put_line('联系方式已修改'); /*修改tb_order表中的状态*/ d_orderState:=&修改状态; UPDATE tb_order SET orderstate=d_orderState WHERE orderID=d_orderid; --若卖家因故不能发货,但已付款则卖家可修改订单状态为'延后' dbms_output.put_line('订单状态已修改'); /*修改tb_order表中的商品颜色*/ SELECT colorid INTO old_productColorID FROM tb_order WHERE orderID=d_orderid; d_colorid :=&颜色id; UPDATE tb_order SET colorID=d_colorid WHERE orderID=d_orderid; SELECT COUNT INTO d_count FROM tb_order WHERE orderID=d_orderid; UPDATE tb_productColor /*修改颜色后要将之前选择的颜色库存加一再讲修改后的颜色库存减一*/ SET stockpile =stockpile-d_count WHERE productColorID=d_orderid; UPDATE tb_productColor SET stockpile =stockpile+d_count WHERE productColorID=old_productColorID; dbms_output.put_line('商品颜色已修改'); /*修改tb_order表中的商品总价*/ SELECT price INTO d_price_befo FROM tb_order WHERE orderID=d_orderid; d_price:=&总价; UPDATE tb_order SET price=d_price WHERE orderID=d_orderid; --若和买家商议后买家同意降价,但商品信息上还是不修改的,就可以在订单总价上修改,付款后卖家修改总价,差价打回买家账户余额内 /*将与之前的差价加回买家账户余额内*/ UPDATE tb_user SET money =money+d_price_befo-d_price WHERE userid= (SELECT toid FROM tb_order WHERE orderid=d_orderid ) ; /*修改tb_user表中买家的账户余额*/ dbms_output.put_line('商品总价已修改'); dbms_output.put_line('操作成功'); COMMIT;EXCEPTIONWHEN no_data_found THEN BEGIN dbms_output.put_line('数据未找到,操作失败'); ROLLBACK; END;WHEN OTHERS THEN BEGIN dbms_output.put_line('操作失败'); ROLLBACK; END;END;/*订单完成进行转账*/--------------------------------------------------------DECLARE /*定义变量,用于存储流水表的用户ID*/ d_userid NUMBER; d_sellerid NUMBER; d_price NUMBER; d_orderid NUMBER;BEGIN d_orderid:='&订单号'; /*买家收到商品后,修改tb_order表中的状态(4=完成)*/ UPDATE tb_order SET orderState=4 WHERE orderID =d_orderid; dbms_output.put_line('订单状态:完成'); /*订单状态为'完成'后建立用户资金流水表一条卖家出售商品收入记录*/ SELECT userid INTO d_sellerid FROM tb_product WHERE productid= (SELECT productid FROM tb_order WHERE orderID=d_orderid ); INSERT INTO tb_userAccount VALUES (1,d_sellerid ,d_orderid,1,sysdate ); dbms_output.put_line('用户资金流水表插入一条卖家出售商品收入记录'); /*交易成功后卖家账户余额增加*/ SELECT price INTO d_price FROM tb_order WHERE orderID=d_orderid; UPDATE tb_user SET money=money+d_price WHERE userid=d_sellerid; dbms_output.put_line('卖家账户余额增加'); dbms_output.put_line('操作成功'); COMMIT;EXCEPTIONWHEN no_data_found THEN BEGIN dbms_output.put_line('数据未找到,操作失败'); ROLLBACK; END;WHEN OTHERS THEN BEGIN dbms_output.put_line('操作失败'); ROLLBACK; END;END;/*货物丢件进行退款*/-------------------------------------------------------------/*前提条件:订单为发货状态,但物流出现丢件情况,由物流赔偿卖家,卖家确认丢件情况发生后,可进行退款操作*/DECLARE /*定义变量,用于存储流水表的用户ID*/ d_sellerid NUMBER; d_orderid NUMBER; d_userid NUMBER; d_price NUMBER;BEGIN d_orderid:='&订单号'; /*卖家确认商品丢件后,修改tb_order表中的状态(5=撤销)*/ UPDATE tb_order SET orderState=5 WHERE orderID =d_orderid; dbms_output.put_line('订单状态:撤销'); /*订单状态为'撤销'后建立用户资金流水表一条买家商品退款收入记录*/ SELECT toid INTO d_userid FROM tb_order WHERE orderID =d_orderid; INSERT INTO tb_userAccount VALUES (1,d_userid ,d_orderid,1,sysdate ); dbms_output.put_line('用户资金流水表插入一条买家商品退款收入记录'); /*撤销成功后买家账户余额恢复*/ SELECT price INTO d_price FROM tb_order WHERE orderID=d_orderid; UPDATE tb_user SET money=money+d_price WHERE userid=d_userid; dbms_output.put_line('买家账户余额恢复'); dbms_output.put_line('操作成功'); COMMIT;EXCEPTIONWHEN no_data_found THEN BEGIN dbms_output.put_line('数据未找到,操作失败'); ROLLBACK; END;WHEN OTHERS THEN BEGIN dbms_output.put_line('操作失败'); ROLLBACK; END;END;--视图/*多表查询*/----------------------------------------------------------------/*用户在商城以商品类型查询一件商品的名称*/CREATE VIEW TNAME_PNAME_VIEW ASSELECT *FROM TB_PRODUCT, TB_PRODUCTTYPEWHERE tb_product.typeid=TB_PRODUCTTYPE.PRODUCTTYPEID;DECLARE name VARCHAR2(30); pname VARCHAR2(50); CURSOR cur1(typename VARCHAR2) IS SELECT productname FROM TNAME_PNAME_VIEW WHERE productTypeName=typename;BEGIN name:='&商品类型'; OPEN cur1(name); LOOP FETCH cur1 INTO pname; EXIT WHEN cur1%notfound; dbms_output.put_line('商品名称:'||pname); END LOOP; CLOSE cur1;END;--/*用户在商城以商品名称查询一件商品的所有信息*/CREATE VIEW t_mation ASSELECT productcolorid, productcolor, stockpile, c.productsizeid, productsize, s.productid, userid, productname, typeid, price, photo, informationFROM tb_productcolor cJOIN tb_productsize sON c.productsizeid=s.productsizeidJOIN tb_product pON p.productid=s.productid;DECLARE m t_mation%rowtype; pname VARCHAR2(50); CURSOR cur_t (product_name IN VARCHAR2) IS SELECT * FROM t_mation WHERE productname=product_name ;BEGIN pname:='&商品名称'; OPEN cur_t(pname); LOOP FETCH cur_t INTO m; EXIT WHEN cur_t%notfound; dbms_output.put_line( '商品id:'||m.productid|| ' 商品名字:'||m.productname|| ' 商品颜色id:'||m.productcolorid|| ' 商品颜色:'||m.productcolor|| ' 商品库存:'||m.stockpile|| ' 商品型号id:'||m.productsizeid|| ' 商品型号:'||m.productsize|| ' 商品卖家id:'||m.userid|| ' 商品类型id:'||m.typeid|| ' 商品价格:'||m.price|| ' 商品图片路径:'||m.photo|| ' 商品简介:'||m.information ); END LOOP; CLOSE cur_t;EXCEPTIONWHEN no_data_found THEN dbms_output.put_line('没有发现您要找的数据!');WHEN OTHERS THEN dbms_output.put_line('其他异常!');END;--/*用户信息查询*/--/*用户在商城可以查询已知用户(或卖家)的基本信息*/DECLARE pid tb_user.userID%type; us tb_user%rowtype;BEGIN pid:=&请输入用户id; SELECT * INTO us FROM tb_user WHERE userID=pid; dbms_output.put_line( '用户id:'||us.userid|| ' 用户名:'||us.name|| ' 邮箱:'||us.email|| ' 所在省份id:'||us.provinceid|| ' 所在城市id:'||us.cityid|| ' 手机号:'||us.telephone|| ' 性别:'||us.sex|| ' 年龄:'||us.age|| ' 生日:'||us.birthday );EXCEPTIONWHEN no_data_found THEN dbms_output.put_line('没有发现您要找的数据!');WHEN OTHERS THEN dbms_output.put_line('其他异常!');END;/*用户登录(应用存储过程)*/CREATE OR REPLACE PROCEDURE login( p_name IN VARCHAR2, p_password IN VARCHAR2)AS t_password VARCHAR2(30);BEGIN SELECT password INTO t_password FROM tb_user WHERE name=p_name; IF t_password=p_password THEN dbms_output.put_line('欢迎登陆!'); ELSE dbms_output.put_line('密码错误!'); END IF;EXCEPTIONWHEN no_data_found THEN dbms_output.put_line('该用户尚未注册!');WHEN OTHERS THEN dbms_output.put_line('未知错误!');END login;BEGIN login('丁兆元','123');END;/*create procedure proc_land@resultName int = 0, --定义为表示用户名错误@resultPassWord int =0, --定义为表示密码错误@userName nvarchar(10) = '***',@PassWord nvarchar(30) = 'jhc123'asselect @resultName = COUNT(1) from tb_user where name=@userName --只要表中有输入的用户名则为表示用户名存在select @resultPassWord = COUNT(1) from tb_user where name=@userName and [password]=@PassWord --若存在的这个用户的信息里的密码等与输入的密码则为表示密码核对无误beginif @resultName = 1 and @resultPassWord = 1print '用户登录成功!'else if @resultName = 0print '用户名错误!'else if @resultPassWord = 0print '密码错误!'end*/
阅读全文
0 0
- 网上商城购物系统(2)
- 网上商城购物系统(1)
- JSP---网上商城购物车
- 网上商城购物车的实现
- 网上商城系统简介
- <一>、网上商城推荐系统
- 手机网上商城-项目经验总结(十一)-修改购物车商品数量
- php网上商城购物车设计代码分享
- J2EE学习笔记——MVC网上商城系统(一)(
- J2EE学习笔记——MVC网上商城系统(二)(
- ShopRE多网店商城系统(配备iphone app网上商城)
- 开源网上商城程序(简介国内外开源网店系统)
- javaweb实现简单网上商城系统
- 购物系统
- (系统)商店购物管理系统
- 系统的MVP购物车(二级购物车全)
- 项目之网上商城 购物车 总结 更新中。。。
- Asp.NET网上商城向购物车添加新商品
- zynq设备树历史最详解
- 跨平台二维绘图程序(三)——VAO&VBO
- Kafka+Spark Streaming+Redis实时计算整合实践
- hdu 6058 Kanade's sum
- ASP.NET MVC – 应用程序文件夹
- 网上商城购物系统(2)
- 前端面试题-20170802
- 蒜头君学代数(二分)
- H5链接打开APP并跳转到制定界面
- ireport设计导出模板,Jasperreport导出PDF、HTML、Excel
- LISTING 20.6 MultipleBounceBall.java
- string、stringbuffer、stringbuilder
- php 数组函数统计数组中,各个值出现的次数
- hadoop部署常见问题