记一次创建MySQL 存储函数的错误信息

[Err] 1415 - Not allowed to return a result set from a function

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 …形式
 
的查询。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值