mysql奇怪问题:select into @varchar变量结果总是null

acneyang 2016-12-12 01:33:40
这句cid 的值永远是null:select ccid into @cid from glist where 1=1 limit 1;
除非这样写cid 才不是null:select 'nlakjsdf' into @cid from glist where 1=1 limit 1;
cid 的定义是varchar(6);
字段ccid也是varchar(6);

调试了好几天了,不得其解,请大家指点指点!多谢!
...全文
519 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
acneyang 2016-12-12
  • 打赏
  • 举报
回复
对了,表的定义如下: CREATE TABLE `goods` ( `rowindex` int(11) NOT NULL AUTO_INCREMENT , `market` char(2) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL , `goods` varchar(2) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL , `stockid` char(6) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL , `dateBegin` datetime NOT NULL , `dateEnd` datetime NOT NULL , PRIMARY KEY (`rowindex`) ) ENGINE=InnoDB DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci AUTO_INCREMENT=817 ROW_FORMAT=DYNAMIC ;
acneyang 2016-12-12
  • 打赏
  • 举报
回复
select stockid into @stid获得的值总是null
acneyang 2016-12-12
  • 打赏
  • 举报
回复
@wmxcn2000,以及所有人
where后面没有其他条件,上面是简化的,完整的函数如下,调试输出结果也放在后面,麻烦帮我分析下,谢谢!

CREATE DEFINER = FUNCTION initPaper(username varchar(20),goodsType varchar(20),questionCount int,barCount int)
RETURNS int(11)
BEGIN
declare i , goodsCount , tmpint , minBarCount , paperNo int ;
declare rid int ;
declare stid VARCHAR(6) ;

set paperNo = rand() * 99999999 ;
select count(*) into goodsCount from goods ;#where market != 'sh' ;
set i = 0 ;
REPEAT
set i = i + 1 ;
set rid = RAND() * goodsCount ;
insert into debugInfo(info) values(CONCAT('i=' , i , ';itemid:' , rid)) ;
select stockid into @stid from goods where rowindex = @rid limit 1 ;
insert into debuginfo (info) values (CONCAT('stid:' , @stid)) ;
until i >= questionCount
end REPEAT ;
RETURN 1 ;
END;
[/code]
卖水果的net 2016-12-12
  • 打赏
  • 举报
回复

-- 楼主的 where 后面,是不是还有别的条件 ?

mysql> create table test(xx varchar(6));
Query OK, 0 rows affected (0.04 sec)

mysql>
mysql> insert into test values('AAA'),('AVBCD');
Query OK, 2 rows affected (0.00 sec)
Records: 2  Duplicates: 0  Warnings: 0

mysql>
mysql> select xx into @cid from test where 1 = 1 limit 1;
Query OK, 1 row affected (0.01 sec)

mysql>
mysql> select @cid ;
+------+
| @cid |
+------+
| AAA  |
+------+
1 row in set (0.01 sec)

mysql>
mysql> drop table test;
Query OK, 0 rows affected (0.00 sec)

17,082

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧