当前位置:Gxlcms > 数据库问题 > mysql 存储过程

mysql 存储过程

时间:2021-07-01 10:21:17 帮助过:54人阅读

不带参数的存储过程: 创建存储过程 DELIMITER // CREATE PROCEDURE text01() #创建存储过程名字 BEGIN SELECT * FROM infolist; #需要执行的操作 END // DELIMITER ; -- 使用存储过程 call text01 #使用这个存储过程 没有注解得是固定格式.

 

  1. <span style="color: #008080;">--</span><span style="color: #008080;"> 带传入参数存储过程(in 参数):</span>
  2. <span style="color: #008080;">--</span><span style="color: #008080;"> 创建存储过程</span>
  3. DELIMITER <span style="color: #808080;">//</span>
  4. <span style="color: #0000ff;">CREATE</span> <span style="color: #0000ff;">PROCEDURE</span> text02(<span style="color: #808080;">in</span> num <span style="color: #0000ff;">int</span><span style="color: #000000;">) #依旧是创建存储过程的名字,但是在括号 in关键字 变量名 变量类型
  5. </span><span style="color: #0000ff;">BEGIN</span>
  6. <span style="color: #0000ff;">SELECT</span> <span style="color: #808080;">*</span> <span style="color: #0000ff;">FROM</span> infolist <span style="color: #0000ff;">where</span> id<span style="color: #808080;">=</span><span style="color: #000000;">num; #执行的操作
  7. </span><span style="color: #0000ff;">END</span>
  8. <span style="color: #808080;">//</span><span style="color: #000000;">
  9. DELIMITER ;
  10. </span><span style="color: #008080;">--</span><span style="color: #008080;"> 使用存储过程</span>
  11. <span style="color: #0000ff;">set</span> <span style="color: #008000;">@num</span><span style="color: #808080;">=</span><span style="color: #800000; font-weight: bold;">2</span><span style="color: #000000;"> #定义变量
  12. call text02(</span><span style="color: #008000;">@num</span>) #将变量传入到存储过程中

 

  1. <span style="color: #008080;">--</span><span style="color: #008080;"> 带传入参数存储过程(out 参数)</span>
  2. delimiter <span style="color: #808080;">//</span>
  3. <span style="color: #0000ff;">create</span> <span style="color: #0000ff;">procedure</span> text03(out mydata <span style="color: #0000ff;">int</span><span style="color: #000000;">) #out关键字 定义变量mydata 整型
  4. </span><span style="color: #0000ff;">begin</span>
  5. <span style="color: #0000ff;">select</span> id <span style="color: #0000ff;">into</span> mydata <span style="color: #0000ff;">from</span> infolist <span style="color: #0000ff;">where</span> id<span style="color: #808080;">=</span><span style="color: #800000; font-weight: bold;">1</span>; #将id 传递(<span style="color: #0000ff;">into</span><span style="color: #000000;">)给变量mydata
  6. </span><span style="color: #0000ff;">end</span>
  7. <span style="color: #808080;">//</span><span style="color: #000000;">
  8. delimiter ;
  9. </span><span style="color: #008080;">--</span><span style="color: #008080;"> 使用存储过程</span>
  10. <span style="color: #0000ff;">set</span> <span style="color: #008000;">@num</span> <span style="color: #808080;">=</span> <span style="color: #800000; font-weight: bold;">0</span><span style="color: #000000;">;
  11. call text03(</span><span style="color: #008000;">@num</span><span style="color: #000000;">);
  12. </span><span style="color: #0000ff;">select</span> <span style="color: #008000;">@num</span>;

 

  1. <span style="color: #008080;">--</span><span style="color: #008080;"> 带传入参数存储过程(inout 参数)</span>
  2. delimiter <span style="color: #808080;">//</span>
  3. <span style="color: #0000ff;">create</span> <span style="color: #0000ff;">procedure</span> text04(inout num <span style="color: #0000ff;">int</span><span style="color: #000000;">)
  4. </span><span style="color: #0000ff;">begin</span>
  5. <span style="color: #0000ff;">set</span> num :<span style="color: #808080;">=</span> num <span style="color: #808080;">*</span><span style="color: #800000; font-weight: bold;">50</span><span style="color: #000000;">;
  6. </span><span style="color: #0000ff;">end</span>
  7. <span style="color: #808080;">//</span><span style="color: #000000;">
  8. delimiter ;
  9. </span><span style="color: #008080;">--</span><span style="color: #008080;">使用存储过程</span>
  10. <span style="color: #0000ff;">set</span> <span style="color: #008000;">@num</span> <span style="color: #808080;">=</span> <span style="color: #800000; font-weight: bold;">177</span><span style="color: #000000;">;
  11. call text04(</span><span style="color: #008000;">@num</span><span style="color: #000000;">);
  12. </span><span style="color: #0000ff;">select</span> <span style="color: #008000;">@num</span>;

 

应用场景:

我现在有一台主机,一台主机内有两个内存条 我已经获取到了主机的信息.

现在已经建立了 主机表 以及内存表,其中内存表有一个外键指向主机ID

我现在要插入主机数据,同时增加主机表信息,以及内存表信息.

  1. <span style="color: #000000;"> # 存储过程定义
  2. delimiter </span><span style="color: #808080;">//</span>
  3. <span style="color: #0000ff;">create</span> <span style="color: #0000ff;">procedure</span> t1_add_t2(<span style="color: #808080;">in</span> t1_name <span style="color: #0000ff;">varchar</span>(<span style="color: #800000; font-weight: bold;">255</span>),<span style="color: #808080;">in</span> t2_name <span style="color: #0000ff;">varchar</span>(<span style="color: #800000; font-weight: bold;">255</span><span style="color: #000000;">))
  4. </span><span style="color: #0000ff;">begin</span>
  5. <span style="color: #0000ff;">insert</span> <span style="color: #0000ff;">into</span> t1(name) <span style="color: #0000ff;">values</span><span style="color: #000000;">(t1_name);
  6. </span><span style="color: #0000ff;">insert</span> <span style="color: #0000ff;">into</span> t2(name,t1_id) <span style="color: #0000ff;">VALUes</span><span style="color: #000000;">(t2_name,LAST_INSERT_ID());
  7. </span><span style="color: #0000ff;">end</span>
  8. <span style="color: #808080;">//</span><span style="color: #000000;">
  9. delimiter ;
  10. # 使用存储过程
  11. </span><span style="color: #0000ff;">set</span> <span style="color: #008000;">@t1_name</span> <span style="color: #808080;">=</span> <span style="color: #ff0000;">‘</span><span style="color: #ff0000;">anec</span><span style="color: #ff0000;">‘</span><span style="color: #000000;">;
  12. </span><span style="color: #0000ff;">set</span> <span style="color: #008000;">@t2_name</span> <span style="color: #808080;">=</span> <span style="color: #ff0000;">‘</span><span style="color: #ff0000;">school_master</span><span style="color: #ff0000;">‘</span><span style="color: #000000;">;
  13. call t2_add_t1(</span><span style="color: #008000;">@t1_name</span>,<span style="color: #008000;">@t2_name</span>);

 

删除存储过程:

  1. <span style="color: #000000;">删除存储过程
  2. </span><span style="color: #0000ff;">drop</span> <span style="color: #0000ff;">procedure</span> 存储过程名;

查看有哪些存储过程

  1. <span style="color: #000000;"># 查看有哪些存储过程
  2. show </span><span style="color: #0000ff;">procedure</span> status;

 

mysql 内置系统函数:

row_count()  #得到操作行数

  1. <span style="color: #000000;">row_count(); 得到操作行数。(单独用没用)
  2. 例子:插入数据
  3. </span><span style="color: #0000ff;">INSERT</span> test(username) <span style="color: #0000ff;">VALUES</span>(<span style="color: #ff0000;">‘</span><span style="color: #ff0000;">A</span><span style="color: #ff0000;">‘</span>),(<span style="color: #ff0000;">‘</span><span style="color: #ff0000;">B</span><span style="color: #ff0000;">‘</span>),(<span style="color: #ff0000;">‘</span><span style="color: #ff0000;">C</span><span style="color: #ff0000;">‘</span><span style="color: #000000;">);
  4. </span><span style="color: #0000ff;">SELECT</span> ROW_COUNT(); <span style="color: #808080;">//</span>返回被插入的记录总数 结果为3

 

last_insert_id()  #返回 最后一次插入自增列的id

  1. <span style="color: #0000ff;">select</span> LAST_INSERT_ID();

 

mysql 存储过程

标签:例子   inf   nbsp   select   status   val   定义变量   返回   函数   

人气教程排行