【发布时间】:2015-07-01 07:38:51
【问题描述】:
所以我在存储过程中有一些用户定义的变量,它看起来像这样:
CREATE DEFINER=`rsgarci1`@`%` PROCEDURE `closestTimestampSun`()
BEGIN
OPEN tstamp_cursor;
get_timestamp: LOOP
SELECT @MID:=m.vID, @MX:=m.x , @MY:=m.y , @MT:=m.timestamp FROM movementSunTemp2 m
WHERE m.vID = cSID
AND m.timestamp = (SELECT MAX(T.timestamp)
FROM (SELECT mm.timestamp FROM movementSunTemp2 mm WHERE mm.vID = cSID AND mm.timestamp <= ctstamp)AS T);
INSERT INTO sunFromLocation(`ctimestamp`,`cID`,`vID`,`x`,`y`,`mtimestamp`)
VALUES(ctstamp,cSID,@MID,@MX,@MY,@MT);
END LOOP get_timestamp;
close tstamp_cursor;
END
我在中间剪掉了一点,但这就是要点。
根据上面的mySQL Page,上面写着:
用户定义的变量是特定于会话的。也就是说,一个客户端定义的用户变量不能被其他客户端看到或使用。给定客户端会话的所有变量都会在该客户端退出时自动释放。
这到底是什么意思?我是 SQL 新手,所以我真的很困惑究竟什么是“用户会话/客户端”。程序退出时客户端会话是否结束?当我关闭运行查询的计算机时它会结束吗?那么,如果我想在查询中使用像 @variable 这样的变量,我必须一直让计算机保持开启状态吗?
这可能是一个愚蠢的问题,但我真的很困惑,所以任何帮助将不胜感激,谢谢!
【问题讨论】:
标签: mysql sql session stored-procedures scope