Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL存储过程返回null_Mysql_Procedure - Fatal编程技术网

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文档说:谢谢你把我的注意力。