1、 创建并执行一个无参数的存储过程 proc_product1,通过该存储过程可以查询商品类别名称为“笔记本电脑”的商品的详细信息,包括商品编号、商品名称、品牌、库存量、单价和上架时间信息。 Create procedure proc_product1 as select prono, proname, brand, stock, price, ontime from product ![](https://img-blog.csdnimg.cn/img_convert/fc160f13fb36a6369f1a71201ba6cfff.png)
2、创建并执行一个带输入参数的存储过程proc_product2,通过该存储过程可以根据输入参数供应商名称和包含关键字的商品名称进行商品具体信息的查询:包括商品编号、商品名称、品牌、库存量、单价、成本价、供应商名称、联系电话信息 CREATE PROCEDURE proc_product2(@supname VARCHAR(255), @keyword VARCHAR(255)) AS SELECT prono, proname, brand, stock, price, cost, supname, telephone FROM product LEFT JOIN supplier ON supplier.supno = product.supno WHERE supname = @supname AND proname LIKE '%' + @keyword + '%' ![](https://img-blog.csdnimg.cn/img_convert/793fba0d58ac4619ccbe533f309d88d6.png) 3、创建并执行一个带输入参数和输出参数的存储过程proc_product3,通过该存储过程可以根据输入的会员用户名查询出该会员购买的商品信息:包括商品名称、购买数量和实付总金额信息 CREATE PROCEDURE proc_product3(@memname VARCHAR(50)) AS SELECT proname, qty, totalmoney FROM member, product, orders WHERE member.memno = orders.memno AND orders.prono = product.prono AND memname = @memname ![](https://img-blog.csdnimg.cn/img_convert/95762821ad8df3d9c51f2cb6c113aeef.png) 4、删除存储过程proc_product3 DROP PROCEDURE proc_product3 ![](https://img-blog.csdnimg.cn/img_convert/aaab784d112f154e5bdbd1e511d17ca4.png) 5、创建一个名为tri_insert1的DML触发器,该触发器的作用是:当向会员表member中添加一条记录时,如果新添加的会员编号已经存在于表中,则禁止插入该条记录,并提示该会员已经存在!。 CREATE TRIGGER tri_insert1 ON member FOR INSERT AS BEGIN DECLARE @memno INT; SELECT @memno = memno FROM inserted; IF EXISTS (SELECT * FROM member WHERE memno = @memno) BEGIN ROLLBACK TRAN; PRINT '不允许添加'; END END ![](https://img-blog.csdnimg.cn/img_convert/1663e77a9d472ab06e035e90635566fe.png) 6、创建一个名为tri_update1的DML触发器,该触发器的作用是:不允许修改订单表orders中的discount属性列的值,并给出提示语句“禁止修改orders表中的discount属性列的数据!” CREATE TRIGGER tri_update1 ON orders AFTER UPDATE AS IF UPDATE(discount) BEGIN ROLLBACK TRAN; PRINT '禁止修改orders 表中的discount 属性列的数据!'; END ![](https://img-blog.csdnimg.cn/img_convert/48e71b8b9edbb5339e708dcae38fcef7.png) 7、创建一个名为tri_insert2的DML触发器,该触发器的作用是:当向会员表member新插入一条会员记录时,系统自动将部门表department中对应部门的属性列deptotal进行加1处理 CREATE TRIGGER tri_insert2 ON member AFTER INSERT AS BEGIN UPDATE department SET deptotal = deptotal + 1 WHERE depno = (SELECT depno FROM inserted); END ![](https://img-blog.csdnimg.cn/img_convert/e3a1034e56fce61b7ac1547090569071.png) 8、创建一个名为tri_delete的DML触发器,该触发器的作用是:用删除会员表menmber中某条会员记录的时,系统自动在订单表orders中查询是否有该会员的订单记录,如果有,则同时删除该会员的所有订单记录 CREATE TRIGGER tri_delete ON member FOR DELETE AS DELETE FROM orders WHERE memno = (SELECT memno FROM deleted) ![](https://img-blog.csdnimg.cn/img_convert/40f6089a01d4a2141c5690c0e378cca5.png) 9、删除触发器tri_delete drop trigger tri_delete ![](https://img-blog.csdnimg.cn/img_convert/cd96d9c26b4ccfad52aa032392e3ca1c.png) |