mysql 简单的添加存储过程

语法

CREATE PROCEDURE 储存名([这里可以写参数])
begin
执行的sql语句 ;
end;

实例
CREATE PROCEDURE add_student(in snum varchar(8),in sname varchar(20) ,in gender  varchar(2),in age int , in cid int ,in remark varchar(255))
BEGIN
INSERT into students(stu_num,stu_name,stu_gender,stu_age,cid,remark) VALUES
(snum,sname,gender,age,cid,remark);
END;

CALL add_student('20210108','小丽','女',18,1,'添加学生存储过程');

call 调用存储过程

CALL add_student(‘20210108’,‘小丽’,‘女’,18,1,‘添加学生存储过程’); 当执行过后 表里面就会多一条数据。

简单的借书存储过程


-- 创建图书信息表:
create table books(
   book_id int primary key auto_increment,
	 book_name varchar(50) not null,
	 book_author varchar(20) not null,
	 book_price decimal(10,2) not null,
	 book_stock int not null,
	 book_desc varchar(200)
);

-- 添加图书信息
insert into books(book_name,book_author,book_price,book_stock,book_desc)
values('Java程序设计','亮亮',38.80,12,'亮亮老师带你学Java');
insert into books(book_name,book_author,book_price,book_stock,book_desc)
values('Java王者之路','威哥',44.40,9,'千锋威哥,Java王者领路人');

-- 创建学生信息表
create table students(
	stu_num char(4) primary key,
	stu_name varchar(20) not null,
	stu_gender char(2) not null,
	stu_age int not null
);

-- 添加学生信息
insert into students(stu_num,stu_name,stu_gender,stu_age) values('1001','张三','男',20);
insert into students(stu_num,stu_name,stu_gender,stu_age) values('1002','李四','女',20);
insert into students(stu_num,stu_name,stu_gender,stu_age) values('1003','王五','男',20);

-- 借书记录表:
create table records(
   rid int primary key auto_increment,
	 snum char(4) not null,
	 bid int not null,
	 borrow_num int not null,
	 is_return int not null, -- 0表示为归还   1 表示已经归还
	 borrow_date date not null,
	 constraint FK_RECORDS_STUDENTS foreign key(snum) references students(stu_num),
	 constraint FK_RECORDS_BOOKS foreign key(bid) REFERENCES books(book_id)
);



-- 使用存储过程完成借书操作 a学号 b编号 num借书的数量 
-- state借书的状态 1:借书成功 2:学号不存在 3:图书不存在 4:库存不足
create PROCEDURE proc_borrow_book(in a char(4),in b int,in num int,out state int)
BEGIN
	DECLARE stu_count int DEFAULT 0 ; -- 判断学号是否存在
	DECLARE book_count int DEFAULT 0 ;-- 判断图书是否存在
	DECLARE stock int DEFAULT 0;-- 库存
	-- 判断学号是否存在
		SELECT COUNT(stu_num) INTO stu_count FROM students where stu_num=a;
		 IF stu_count>0 THEN																								-- 判断学号是否存在
	    SELECT COUNT(book_id) INTO book_count FROM books where book_id =b;  
				IF book_count>0 THEN   																					-- 判断图书是否存在
	         SELECT book_stock INTO stock FROM books where book_id =b;
							IF (stock-num)>0 THEN																			 -- 判断库存是否充足
								  UPDATE books set book_stock = (stock-num);
									INSERT into records VALUES(0,a,b,num,0,NOW()); 
									set state = 1;
							ELSE
									set state = 4; -- 库存不足
							END IF;
        ELSE
		      set state = 3; -- 图书不存在
        END IF;
     ELSE
    	set state = 2; -- 学号不存在
		 END IF;
END;

set @state=0; -- 创建一个全局变量接收  存储过程返回值
CALL proc_borrow_book('1001',8,99,@state);
SELECT @state from DUAL;
要在MySQL添加存储过程,可以按照以下步骤进行操作: 1. 使用CREATE PROCEDURE语句创建存储过程,并指定所需的参数(如果有)以及要执行的SQL语句。例如: ``` CREATE PROCEDURE add_student(in snum varchar(8),in sname varchar(20) ,in gender varchar(2),in age int , in cid int ,in remark varchar(255)) BEGIN INSERT into students(stu_num,stu_name,stu_gender,stu_age,cid,remark) VALUES (snum,sname,gender,age,cid,remark); END; ``` 这个例子创建了一个名为add_student的存储过程,它接受六个参数,并将这些参数的值插入到students表中。 2. 使用CALL语句调用该存储过程,并传递相应的参数值。例如: ``` CALL add_student('20210108','小丽','女',18,1,'添加学生存储过程'); ``` 这个例子调用了名为add_student的存储过程,并传递了相应的参数值。 请注意,以上是MySQL添加存储过程的基本步骤,具体的语法和操作方式可能会因版本和环境而有所不同。同时,为了确保安全性和正确性,建议在创建和调用存储过程之前先进行适当的验证和测试。 <span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [mysql 简单添加存储过程](https://blog.csdn.net/Xiaobai_0106/article/details/124772508)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [MySQL实现创建存储过程并循环添加记录的方法](https://download.csdn.net/download/weixin_38663595/14837611)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [基于Django+node.js+MySQL+杰卡德相似系数智能新闻推荐系统-机器学习算法应用(含Python源码)+数据集](https://download.csdn.net/download/qq_31136513/88285126)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值