zoukankan      html  css  js  c++  java
  • mysql 编写存储过程

    先看例子:

    1、delimiter $$
    2、drop procedure if exists`test_procedure` $$
    3、create procedure test_procedure(IN puser_id VARCHAR(30),IN pitem_id varchar(45),OUT result INT)
    4、begin

    5、select id into result from train_tbl where user_id = puser_id;
    6、set result=10;
    7、end $$
    8、delimiter ;

    详解:

    1、首先使用delimiter将结束符从“;”变为$$ ,这样就不会在过程或者函数中的“;”被mysql解释成语句的结束而提示错误。

    在存储过程或函数创建完毕后,使用“delimiter”再把结束符该为“;”。

    2、演示了存储过程的删除,通过存储过程的名称来删除一个存储过程 

    3、创建一个存储过程,设定存储过程的名字为 “test_procedure”,设置存储过程的参数,及其参数类型。存储过程的参数可以是IN、OUT、INOUT类型,函数的参数只能是IN类型。

    IN OUT INOUT的区别:详情参见http://www.blogjava.net/nonels/archive/2009/04/22/233324.html

    IN类型类似于值传递,MYSQL存储过程内部可能会修改此参数,但是对于IN类型的参数的修改对于调用者来说是不可见的。

    例如:

    drop procedure if exists pr_param_in;
    
    create procedure pr_param_in
    (
       in id int -- in 类型的 MySQL 存储过程参数
    )
    begin
       if (id is not null) then
          set id = id + 1;
       end if;
    
       select id as id_inner;
    end;

    set @id = 10;
    
    call pr_param_in(@id);
    
    select @id as id_out;
    
    mysql> call pr_param_in(@id);
    +----------+
    | id_inner |
    +----------+
    |       11 |
    +----------+
    
    mysql> select @id as id_out;
    +--------+
    | id_out |
    +--------+
    | 10     |
    +--------+

    OUT类型MySQL 存储过程 “out” 参数:从存储过程内部传值给调用者。在存储过程内部,该参数初始值为 null,无论调用者是否给存储过程参数设置值。
    INOUT MySQL 存储过程 inout 参数跟 out 类似,都可以从存储过程内部传值给调用者。不同的是:调用者还可以通过 inout 参数传递值给存储过程。

    4、begin 和end 详见:http://dev.mysql.com/doc/refman/5.1/en/begin-end.html
    BEGIN END被用来写并列复合句,比如存储过程。一个并列复合句可以包括多条语句,0条也是合法的。
    BEGIN……END块可以内嵌。
    语句之间用定界符(delimiter)“;”分隔。
    5、自己的查询语句。

    参考资料:

    http://www.blogjava.net/nonels/archive/2009/04/22/233324.html

    (存储过程没有返回值,函数必须有返回值)

  • 相关阅读:
    一个asp.net MVC 的分页代码
    JavaScript教程:JavaScript如何判定用户浏览器类型和版本号?
    CutyCapt A Qt WebKit Web Page Rendering Capture Utility
    Top 10 Algorithms in Data Mining
    a c++ bloger
    设置MYSQL允许用IP访问
    QtWebKit Module
    kubuntudesktop nearly 700m,so big
    Wt, C++ Web Toolkit Introduction
    硅谷、纽约、伦敦如何演绎世界三大科技中心
  • 原文地址:https://www.cnblogs.com/earendil/p/4469714.html
Copyright © 2011-2022 走看看