1、报错信息
[Err] 1415 - Not allowed to return a result set from a function
[Err] 1415 - Not allowed to return a result set from a function
2、报错脚本
DELIMITER //
CREATE function GetShortInt(ii varchar(20))
returns decimal(18, 2)
begin
declare w decimal(18, 2);
declare q decimal(18, 2);
declare b decimal(18, 2);
declare s decimal(18, 2);
declare g decimal(18, 2);
select w=0,q=0,b=0,s=0,g=0; ############ 问题点
if(locate('万', ii)>0) THEN
set w=(select reInt(left(ii,1)))*10000;
END IF;
if(locate('千',ii)>0) THEN
set q=(select reInt(right(left( ii,locate('千', ii)-1),1)))*1000;
END IF;
if(locate('百',ii)>0) THEN
set b=(select reInt(right(left( ii,locate('百', ii)-1),1)))*100;
END IF;
if(locate('十',ii)>0) THEN
begin
declare Mychar varchar(2);
if(locate('十',ii)=1) THEN
set s=10.0;
else
begin
set MyChar=right(left(ii,locate('十',ii)-1),1);
if( Mychar='万' or Mychar='千'
or Mychar='百' or Mychar='零') THEN
set s=10.0;
else
set s=(select reInt( Mychar))*10.0;
END IF;
end;
END IF;
end;
END IF;
if(locate('十',ii)<len(ii)) THEN
set g = (select reInt(right(ii,1)));
END IF;
return w+ q+ b+ s+ g ;
end //
DELIMITER ;
3、处理办法
注释掉以上脚本中:
select w=0,q=0,b=0,s=0,g=0;
即可
4、原因
在mysql的trigger和function中不能出现select * from table形式的查询,
因为其会返回一个结果集;而这在mysql的trigger和function中是不可接受的,
但是在存储过程中可以。在trigger和function中可以使用select … into …形式
的查询。