• Mysql——存储过程


    特点:封装、复用,可以接受参数,可以返回参数

    1. -- 创建存储过程
    2. CREATE PROCEDURE p1()
    3. BEGIN
    4. SELECT * from ev_users;
    5. END;
    6. -- 使用存储过程
    7. CALL p1()
    8. -- 查看存储过程定义
    9. SHOW CREATE PROCEDURE p1;
    10. -- 删除存储过程
    11. DROP PROCEDURE if EXISTS p1;

    2.用户变量

    1. -- 设置用户变量
    2. set @myage := 18;
    3. -- 查询用户变量
    4. SELECT @myage;
    5. -- 实例
    6. SELECT COUNT(*) INTO @myage from ev_users

    流程

    1. -- 局部变量
    2. -- 声明 - DECLARE
    3. -- 赋值 -
    4. CREATE PROCEDURE p2()
    5. BEGIN
    6. DECLARE stu_count int DEFAULT 0;
    7. SELECT count(*) into stu_count from ev_users;
    8. SELECT stu_count;
    9. END;
    10. call p2();
    11. -- if 判断
    12. CREATE PROCEDURE p3 ()
    13. BEGIN
    14. DECLARE score int DEFAULT 58;
    15. DECLARE result VARCHAR ( 10 );
    16. IF
    17. score >= 85 THEN
    18. SET result := '优秀';
    19. ELSEIF score >= 60 THEN
    20. SET result := '及格';
    21. ELSE
    22. SET result := '不及格';
    23. END IF;
    24. END;
    25. -- IN,OUT
    26. CREATE PROCEDURE p4 (in score int,out result VARCHAR(10))
    27. BEGIN
    28. -- DECLARE result VARCHAR ( 10 );
    29. IF
    30. score >= 85 THEN
    31. SET result := '优秀';
    32. ELSEIF score >= 60 THEN
    33. SET result := '及格';
    34. ELSE
    35. SET result := '不及格';
    36. END IF;
    37. END;
    38. SELECT @result2
    39. call p4(70,@result2);
    40. -- inout
    41. CREATE PROCEDURE p5(INOUT score DOUBLE)
    42. BEGIN
    43. SET score := score* 0.5;
    44. END
    45. set @score :=78;
    46. CALL p5(@score)
    47. SELECT @score
    48. -- CASE
    49. CREATE PROCEDURE p6 ( IN MONTH INT ) BEGIN
    50. DECLARE
    51. result VARCHAR ( 10 );
    52. CASE
    53. WHEN MONTH >= 1
    54. AND MONTH <= 3 THEN
    55. SET result := '第一季度';
    56. WHEN MONTH >= 4
    57. AND MONTH <= 6 THEN
    58. SET result := '第二季度';
    59. WHEN MONTH >= 7
    60. AND MONTH <= 9 THEN
    61. SET result := '第三季度';
    62. WHEN MONTH >= 10
    63. AND MONTH <= 12 THEN
    64. SET result := '第四季度';
    65. ELSE
    66. SET result :='非法参数';
    67. END CASE;
    68. SELECT CONCAT('您输入的月份为:',month,',所属的季度为:',result) '结果';
    69. END;
    70. CALL p6(2)
    71. -- 循环 WHILE 满足则继续执行
    72. CREATE PROCEDURE p7(in n int)
    73. BEGIN
    74. DECLARE total int DEFAULT 0;
    75. WHILE n>0 DO
    76. set total :=total+n;
    77. set n:=n-1;
    78. END WHILE;
    79. SELECT total;
    80. END;
    81. call p7(8)
    82. -- REPEAT 满足时,退出循环
    83. CREATE PROCEDURE p8(in n int)
    84. BEGIN
    85. DECLARE total int DEFAULT 0;
    86. REPEAT
    87. set total:=total+n;
    88. set n:=n-1;
    89. UNTIL n<=0 END REPEAT;
    90. SELECT total;
    91. END;
    92. CALL p8(10)
    93. -- loop 如不增加退出,则会一直循环
    94. -- LEAVE 退出循环
    95. -- ITERATE 跳出当前循环
    96. CREATE PROCEDURE p9 ( IN n INT ) BEGIN
    97. DECLARE
    98. total INT DEFAULT 0;
    99. sum :
    100. LOOP
    101. IF
    102. n <= 0 THEN
    103. LEAVE sum;
    104. END IF;
    105. IF
    106. n % 2 = 1 THEN
    107. set n := n - 1;
    108. ITERATE sum;
    109. END IF;
    110. SET total := total + n;
    111. SET n := n - 1;
    112. END LOOP sum;
    113. SELECT
    114. total;
    115. END;
    116. CALL p9(100)
    117. -- 游标

  • 相关阅读:
    transformer不同的包加载模型的结构不一样
    基于Python实现的图的同构算法
    云服务器搭建Hadoop分布式
    新手必会的静态站点生成器——Gridsome
    map和set容器
    「设计模式」六大原则之单一职责小结
    go并发(进程、线程、协程)
    【C++初阶】前言——C++的发展简述及学习方法分享
    JS基础--强制类型转换(易错点,自用)
    k8s整合kong
  • 原文地址:https://blog.csdn.net/qq_20497071/article/details/126766238