【发布时间】:2015-08-28 21:31:44
【问题描述】:
所以我有这个代码是存储过程的一部分:
SET @MID = 0;
SET @MX = 0;
SET @MY = 0;
SET @MT = 0;
SET @CSTAMP = '2014-6-06 08:03:19';
SELECT @MID=m.ID, @MX=m.x , @MY=m.y , @MT=m.timestamp FROM movement m
WHERE m.ID = cSID
AND m.timestamp = (SELECT MAX(T.timestamp)
FROM (SELECT mm.timestamp FROM movement mm WHERE mm.ID = cSID AND mm.timestamp <= @CSTAMP)AS T);
INSERT INTO DBTable(`ctimestamp`,`ID`,`x`,`y`,`mtimestamp`)
VALUES(ctstamp,@MID,@MX,@MY,@MT);
基本上,它会创建一些用户定义的变量,在查询中为它们分配值,并尝试将它们插入到名为DBTable 的表中,其中列ctimestamp,ID,x,y, mtimestamp。问题是,当我在查询后看到DBTable 时,ID、x、y 和 mtimestamp 列都是空的(只有 0),只有 ctimestamp 填充了来自游标变量ctstamp 的值。
我不知道这里出了什么问题...我插入表格是不是错了?我不能以这种方式插入像@variable_name 这样的变量吗?
任何帮助将不胜感激,谢谢!
编辑
我刚刚想到,由于用户定义的变量是特定于会话的,这是否意味着我不能退出我的客户端并关闭计算机而让数据库服务器运行其余的查询?抱歉,这似乎是一个愚蠢的问题,但我对存储过程和 SQL 很陌生。
【问题讨论】:
-
如有疑问,请查看您的数据。具体来说,在插入查询之前选择所有变量。如果它们都为空,请查看您的选择查询并查看它返回的行数。
-
@DanBracuk 谢谢!我会试试的
-
是的,我会检查 cSID 是否真的返回任何东西。
标签: mysql sql stored-procedures phpmyadmin cursor