PHP群:95885625 Hbuilder+MUI群:81989597 站长QQ:634381967
    您现在的位置: 首页 > 数据库 > MySQL教程 > 正文

    mysql自定义存储过程和触发器

    作者:w634381967来源:网络浏览:时间:2020-09-30 00:07:50我要评论
    导读:mysql 自定义存储过程和触发器--存储过程示范DROP PROCEDURE IF EXISTS PRO_TEST;CREATE PROCEDURE PRO_TEST(IN NUM_IN INT,OUT ...
    mysql 自定义存储过程和触发器
     
    --存储过程示范
        DROP PROCEDURE IF EXISTS PRO_TEST;
        CREATE PROCEDURE PRO_TEST(IN NUM_IN INT,OUT NUM_OUT INT,INOUT NUM_INOUT)
        BEGIN
            //DO ANYTHING YOU WANT
        END;
        
        参数解释:
            in : 就是输入参数,输入参数是会被传入到存储过程作为参数使用,改变它的值将不会改变其原本值,相当于是值传递
            out: 此为输出参数,在存储过程中为给其值时,哪怕之前传入值,其值也只是NULL,相当于是在存储过程中新建一个值并付给out参数并输出
            inout:此为输入输出参数,可以理解为前两者之和,最为简单的就是理解为按照对象传递
            
        在命令行中如何调用:
            SET @NM_IN=1,@NM_OUT=2,@NM_INOUT=3;
            call PROC_TEST(@NM_IN,@NM_OUT,@NM_INOUT);
        
        在java中如何调用:
            想办法得到connection,在hibernate中为getSession().connection();
            使用Java.Sql.CallableStatemet call=connection().prepareStatement("call PROC_TEST(1,2,3)");
            call.executeQuery()将返回ResultSet对象,call.executeUpdate()将会返回受影响的行数。
            
            
    --触发器示例
        触发器按照触发类型可分为:INSERT,UPDATE,DELETE触发器,
        按照触发时间可分为:BEFORE,AFTER,
        按照内容新旧可分为:OLD,NEW,其中删除操作只有OLD,新增操作只有NEW,修改操作两者皆有
        
        eg:没修改user表一次,就往user_back表插入修改之前和修改之后的数据:
        CREATE TRIGGER TRI_UPGRADE_USER BEFORE UPDATE ON USER FOR EACH ROW
        BEGIN
            INSERT INTO USER_BACK(USERNAME,USERPWD) VALUES(OLD.USERNAME,OLD.USERPWD);
            INSERT INTO USER_BACK(USERNAME,USERPWD) VALUES(NEW.USERNAME,NEW.USERPWD);
        END;
        
        这样就搞定了
    转载请注明(B5教程网)原文链接:https://b5.mxunkeji.com/content-35-752-1.html
    相关热词搜索: mysql 存储过程 触发器