设为首页 加入收藏

TOP

mysql自定义存储过程和触发器
2015-07-24 11:17:04 来源: 作者: 【 】 浏览:3
Tags:mysql 定义 存储 过程 触发器
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;
	
	这样就搞定了

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇mysql事务 下一篇php无法连接到mysql

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·你必须要弄懂的多线 (2025-12-25 04:22:35)
·如何在 Java 中实现 (2025-12-25 04:22:32)
·Java【多线程】单例 (2025-12-25 04:22:29)
·C++中智能指针的性能 (2025-12-25 03:49:29)
·如何用智能指针实现c (2025-12-25 03:49:27)