MySQL存储过程例子
CREATE INDEX idx_sname ON student( sname(4));
create VIEW v_stu
AS
SELECT sname,degree from student s, score sc
where s.sno=sc.sno;
-- 创建 INSERT PROCEDURE
DROP PROCEDURE IF EXISTS `P_INSERT_STUDENT`;
CREATE PROCEDURE P_INSERT_STUDENT(
IN xueH VARCHAR(3),
IN xingM VARCHAR(4),
IN xingB VARCHAR(2),
IN shengR DATETIME,
IN banJ VARCHAR(5)
)
BEGIN
SET @xueH = xueH;
SET @xingM = xingM;
SET @xingB = xingB;
SET @shengR = shengR;
SET @banJ = banJ;
SET @insertSql = CONCAT('INSERT INTO STUDENT VALUES(?,?,?,?,?)');
PREPARE stmtinsert FROM @insertSql;
EXECUTE stmtinsert USING @xueH,@xingM,@xingB,@shengR,@banJ;
DEALLOCATE PREPARE stmtinsert;
END;
-- 存储过程调用
CALL P_INSERT_STUDENT(412,'黄一','女','1990-12-01 10:20:01','304');
CALL P_INSERT_STUDENT(413,'黄二','男','1992-12-01 10:20:01','304');
CALL P_INSERT_STUDENT(414,'黄三','男','1993-12-01 10:20:01','304');
CALL P_INSERT_STUDENT(416,'黄五','女','1992-02-01 10:20:01','304');
SELECT * from student;
DROP PROCEDURE IF EXISTS `pro_get_info`;
CREATE PROCEDURE pro_get_info(
IN ckh VARCHAR(5)
)
BEGIN
SET @ckh=ckh;
SET @selectSQL = CONCAT('select s.*,cno,DEGREE from student s,score sc
where s.sno=sc.sno and cno=?');
PREPARE stmtSELECT FROM @selectSQL;
EXECUTE stmtSELECT USING @ckh;
DEALLOCATE PREPARE stmtSELECT;
END;
CALL pro_get_info('3-245');
-- 创建 INSERT TRIGGER
DROP TRIGGER IF EXISTS `t_insert_score`;
CREATE TRIGGER t_insert_score AFTER INSERT ON student FOR EACH ROW
BEGIN
DECLARE sno VARCHAR(3) ;
DECLARE cno VARCHAR(35) ;
DECLARE degree DECIMAL(10) ;
INSERT into score VALUES(111,'3-105','99');
END;
-- 结果验证
SELECT * from score;
##################################################
# 批量造数据,插入数据库
####################################################
DROP TABLE IF EXISTS test.test;
CREATE TABLE test.test(
id int(10) not null auto_increment,
a int(10) not null,
b int(10) not null,
c int(10) not null,
PRIMARY key (`id`)
)ENGINE INNODB DEFAULT CHARSET utf8 COMMENT '测试表';
TRUNCATE table test.test;
#定义存储过程
delimiter //
DROP PROCEDURE IF EXISTS insert_test_val;
##num_limit 要插入数据的数量,rand_limit 最大随机的数值
CREATE PROCEDURE insert_test_val(
in num_limit int,
in rand_limit int)
BEGIN
DECLARE i int default 1;
DECLARE a int default 1;
DECLARE b int default 1;
DECLARE c int default 1;
WHILE i<=num_limit do
set a = FLOOR(rand()*rand_limit);
set b = FLOOR(rand()*rand_limit);
set c = FLOOR(rand()*rand_limit);
INSERT into test.test values (null,a,b,c);
set i = i + 1;
END WHILE;
END
//
#调用存储过程
call insert_test_val(1000,10);
CREATE PROCEDURE mytest() --新建进程
BEGIN
declare i int;
DECLARE j varchar(200);
set i = 2;
while i < 11 do --循环体
SET j=CONCAT('wwq',i); --拼接字符串
INSERT INTO pub_user(`ID`, `NAME`, `ACCOUNT`, `PASSWORD`, `USER_CODE`)
VALUES (i, '王馨', j, 'e10adc3949ba59abbe56e057f20f883e', '');
VALUES (i, 'A685187D29AF4AD793F2753DC17C1435');
VALUES ('95AC32C8B9874B4085A01187C341067B', i, 'INSPUR-DZZW-TYSP');
end while;
MySQL存储过程例子的更多相关文章
- MySQL 存储过程例子,不能在if else里面用begin end否则会报错Error Code : 1064!
Error Code : 1064 You have an error in your SQL syntax; check the manual that corresponds to your My ...
- MySQL存储过程例子,包含事务,参数,嵌套调用,游标,循环等
drop procedure if exists pro_rep_shadow_rs; delimiter | ---------------------------------- -- rep_sh ...
- mysql 存储过程 例子
DROP PROCEDURE IF EXISTS variable_demo; delimiter // CREATE PROCEDURE variable_demo() BEGIN select ' ...
- MySQL存储过程(转)
一.MySQL 创建存储过程 "pr_add" 是个简单的 MySQL 存储过程,这个存储过程有两个 int 类型的输入参数 "a"."b" ...
- mysql存储过程详解
mysql存储过程详解 1. 存储过程简介 我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的S ...
- mysql存储过程语法及实例
存储过程如同一门程序设计语言,同样包含了数据类型.流程控制.输入和输出和它自己的函数库. --------------------基本语法-------------------- 一.创建存储过程cr ...
- Mysql存储过程调用
mysql存储过程实例教程 发布时间:2014-04-09编辑:JB01 这篇文章主要介绍了mysql存储过程的使用方法,mysql存储过程实例教程,有需要的朋友参考下. 1.1create p ...
- mysql存储过程详细教程
记录mysql存储过程中的关键语法:DELIMITER // 声明语句结束符,用于区分;CREATE PROCEDURE demo_in_parameter(IN p_in int) 声明存储过程 ...
- Mysql 存储过程基本语法
delimiter //一般情况下MYSQL以:结尾表示确认输入并执行语句,但在存储过程中:不是表示结束,因此可以用该命令将:号改为//表示确认输入并执行. 一.创建存储过程 1.基本语法: crea ...
随机推荐
- Pandas的Categorical Data类型
pandas从0.15版开始提供分类数据类型,用于表示统计学里有限且唯一性数据集,例如描述个人信息的性别一般就男和女两个数据常用'm'和'f'来描述,有时也能对应编码映射为0和1.血型A.B.O和AB ...
- LinkStack(链栈)
链栈即链式栈,也就是说我们不用再考虑空间的大小,可随心所欲的进行数据的插入/删除了.和顺序栈一样,仍然要保持其stack的特性,只在一端进行插入和删除,后进先出. (2018-02-14 代码更新) ...
- 自动重启 supervisor
在开发或调试Node.js应用程序的时候,当你修改js文件后,总是要按下CTRL+C终止程序,然后再重新启动,即使是修改一点小小的参数,也总是要不断地重复这几个很烦人的操作.有没有办法做到当文件修改之 ...
- Python 基础之正则之一 单字符,多字符匹配及开头结尾匹配
一.正则表达式之单个字符匹配 格式:lst = re.findall(正则表达式,要匹配的字符串)预定义字符集 匹配内容 .匹配任意字符,除了换行符\n \d匹配数字 \D匹配非数字 \w匹配字母或数 ...
- iOS项目的一般开发流程
- 吴裕雄--天生自然python数据清洗与数据可视化:MYSQL、MongoDB数据库连接与查询、爬取天猫连衣裙数据保存到MongoDB
本博文使用的数据库是MySQL和MongoDB数据库.安装MySQL可以参照我的这篇博文:https://www.cnblogs.com/tszr/p/12112777.html 其中操作Mysql使 ...
- Ubuntu12.04LTS中安装和使用Spin
https://blog.csdn.net/jackandsnow/article/details/94434481 把第三步 安装tk(在wish中):apt-get install wish 改为 ...
- Linux命令:top命令
top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器.下面详细介绍它的使用方法.top是一个动态显示过程,即可以通过用户按键来不断刷新 ...
- for循环语句及批量创建用户!
1.for 语句结构for 变量名 in 取值列表do命令序列done ================================================================ ...
- Integer a = 200,b=200比较详解
题记:前几天面试Java基础给来了个面试题Integer a=200,b=200;System.out.println(a==b);当时回答是false,后来面试官又来了一个Integer a=100 ...