MySQL存储过程返回null
我确实问过类似的问题和他们的答案,但是没有帮助。 以下是我的程序:MySQL存储过程返回null,mysql,procedure,Mysql,Procedure,我确实问过类似的问题和他们的答案,但是没有帮助。 以下是我的程序: DELIMITER // DROP PROCEDURE IF EXISTS test// CREATE PROCEDURE test() BEGIN DECLARE intime TIME; SET intime:=(SELECT intime FROM new_attendance WHERE empid='xxx' AND DATE(dt)='2013-08-02'); SELECT intime; END // DEL
DELIMITER //
DROP PROCEDURE IF EXISTS test//
CREATE PROCEDURE test()
BEGIN
DECLARE intime TIME;
SET intime:=(SELECT intime FROM new_attendance WHERE empid='xxx' AND DATE(dt)='2013-08-02');
SELECT intime;
END //
DELIMITER ;
当我执行这行代码时,它工作并返回正确的值:
SELECT empid FROM new_attendance WHERE empid='xxx' AND DATE(dt)='2013-08-02'
但它在程序内部不起作用。我感谢你的帮助。提前多谢 首先,MySQL中的变量赋值采用
=
语法,而不是:=
语法
编辑:点击上面,似乎这两种语法毕竟都是受支持的
第二,完全消除intime
变量并只执行以下操作不是更简单吗
DELIMITER //
DROP PROCEDURE IF EXISTS test//
CREATE PROCEDURE test()
BEGIN
SELECT intime FROM new_attendance WHERE empid='xxx' AND DATE(dt)='2013-08-02';
END //
DELIMITER ;
呃,是时间类型的empid吗?@hjpotter92 sry。。。这是intime,编辑有问题,请指出。@mavrosxristoforos这是intime,请为给您带来的不便表示歉意。@Sunny另外,如果
empid
是INT
或其衍生物,您不需要将其括在引号中。不客气。如果我的答案解决了你的问题,请考虑接受它作为正确的一个。“GeMaGas是的,我们可以使用“=”和“=:”两个用于分配,但仅当与SET一起使用,否则“=”检查平等- MySQL文档说:谢谢你把我的注意力。