当前位置: 首页 > news >正文

MySQL存储过程例子

-- 索引 INDEX
CREATE INDEX idx_sname ON student( sname(4));
ALTER TABLE teacher add index idx_tname(tname);
DROP INDEX idx_sname on student;
-- 视图 VIEW
create VIEW v_stu
AS
 SELECT sname,degree from student s, score sc
 where s.sno=sc.sno;
SELECT * from v_stu;
-- 存储过程 PROCEDURE
--  创建 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-105');
CALL pro_get_info('3-245');

--  触发器 TRIGGER
-- 创建 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);
########################################################

DROP PROCEDURE IF EXISTS mytest; --判断进程是否存在,存在则删除
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', '');
    INSERT INTO pub_user_post (`POST_CODE`, `USER_CODE`)
    VALUES (i, 'A685187D29AF4AD793F2753DC17C1435');

    INSERT INTO pub_user_role (`ROLE_CODE`, `USER_CODE`, `APP_CODE`)
    VALUES ('95AC32C8B9874B4085A01187C341067B', i, 'INSPUR-DZZW-TYSP');
    set i=i+1;
  end while;
end  --结束定义语句

call mytest();  --调用进程
 
 

转载于:https://www.cnblogs.com/jane4321/p/11101309.html

相关文章:

  • sql一关联多查询时否定筛选出现的问题的解决
  • 浅复制和深复制
  • JAVA-WEB-错误之-'OPTION SQL_SELECT_LIMIT=DEFAULT'
  • SpringBoot:spring boot使用Druid和监控配置
  • linux uniq去重,awk输出(可用于爆破字典优化)
  • Linux内核简介、子系统及分类
  • [转载]浅谈JavaScript函数重载
  • 2019-7-2 作业1 2 3
  • python 基本数据类型及其功能-3-列表
  • Java虚拟机类加载机制
  • Python高效编程技巧
  • MFC:常用的消息
  • ubuntu左边栏消失
  • java表达式和三目运算符
  • Matrix: Matrix的,postScale(), postTranslate()方法
  • 【140天】尚学堂高淇Java300集视频精华笔记(86-87)
  • github从入门到放弃(1)
  • JavaScript 奇技淫巧
  • Python进阶细节
  • Sequelize 中文文档 v4 - Getting started - 入门
  • Unix命令
  • 湖南卫视:中国白领因网络偷菜成当代最寂寞的人?
  • 开发基于以太坊智能合约的DApp
  • 力扣(LeetCode)56
  • 如何解决微信端直接跳WAP端
  • 项目实战-Api的解决方案
  • 小程序button引导用户授权
  • 再谈express与koa的对比
  • 【云吞铺子】性能抖动剖析(二)
  • # 透过事物看本质的能力怎么培养?
  • ## 临床数据 两两比较 加显著性boxplot加显著性
  • #gStore-weekly | gStore最新版本1.0之三角形计数函数的使用
  • #if #elif #endif
  • #LLM入门|Prompt#3.3_存储_Memory
  • $.ajax()方法详解
  • (6)STL算法之转换
  • (BFS)hdoj2377-Bus Pass
  • (层次遍历)104. 二叉树的最大深度
  • (超详细)语音信号处理之特征提取
  • (二)hibernate配置管理
  • (附源码)springboot金融新闻信息服务系统 毕业设计651450
  • (推荐)叮当——中文语音对话机器人
  • (原創) 博客園正式支援VHDL語法著色功能 (SOC) (VHDL)
  • (原創) 物件導向與老子思想 (OO)
  • (转)Oracle 9i 数据库设计指引全集(1)
  • (转)关于如何学好游戏3D引擎编程的一些经验
  • (转载)利用webkit抓取动态网页和链接
  • .net core 6 redis操作类
  • .net和php怎么连接,php和apache之间如何连接
  • .vue文件怎么使用_vue调试工具vue-devtools的安装
  • /etc/shadow字段详解
  • ::前边啥也没有
  • @requestBody写与不写的情况
  • [\u4e00-\u9fa5] //匹配中文字符
  • [ActionScript][AS3]小小笔记