同样一个存储过程 例如:
CREATE PROCEDURE `test`(IN userid int,OUT l int)
begin
set l = 5;
end然后我在触发器里 去调用这个存储过程 如下:create trigger setlevel before update on uchome_space
FOR EACH ROW
begin
declare le int default 0;
if old.experience <> new.experience then
call test(new.uid,@le);
set new.level = le;
end if;
end但是触发器每次触发的时候 总是得到的le是0 ,如果去掉前面的@就会得到正确的值,我的问题是这个@在什么情况下用,什么时候不用吗?我在网上查了下,没有查到满意的答案,或许是我没有表达清楚。
各路英雄 如有知道者,望能不吝赐教。
CREATE PROCEDURE `test`(IN userid int,OUT l int)
begin
set l = 5;
end然后我在触发器里 去调用这个存储过程 如下:create trigger setlevel before update on uchome_space
FOR EACH ROW
begin
declare le int default 0;
if old.experience <> new.experience then
call test(new.uid,@le);
set new.level = le;
end if;
end但是触发器每次触发的时候 总是得到的le是0 ,如果去掉前面的@就会得到正确的值,我的问题是这个@在什么情况下用,什么时候不用吗?我在网上查了下,没有查到满意的答案,或许是我没有表达清楚。
各路英雄 如有知道者,望能不吝赐教。
解决方案 »
- MySQL高并发问题
- 帮忙看看mysql的状态怎么样
- mysql 动态游标与静态游标
- 错误调查:table is full,cannot find a free slot for an undo log
- 请教两个where条件的区别
- [急!]如何将Select取出来的数据, 可以被当做一个新的表,可以再被多次select
- 多个记录具有相同的pId,至少1条的Status为1,而且至少一条的Status不为1
- java程序里执行mysql脚本文件
- 数据库导入出错信息..
- mysql连接器的抛NullReferenceException
- SQL查询数据,用列表显示数据,并且将拼音名称换成中文
- 查询时提示:系统内存载入已到极限
create trigger setlevel before update on uchome_space
FOR EACH ROW
begin
declare le int default 0;
if old.experience <> new.experience then
call test(new.uid,@le);
set new.level = @le;
end if;
end这样才正确吧。
@le这个是用户变量,你上面写的那个set new.level = le,根本没有取到这个用户变量呀。LE默认是0,就永远是0。
FOR EACH ROW
begin
declare le int default 0;
if old.experience <> new.experience then
call test(new.uid,le);
set new.level = le;
end if;
end