mysql where子句不起作用

时间:2015-03-09 13:50:11

标签: mysql sql

我正在mysql中编写一个存储过程,它只返回带有ID的行,或者在没有提供ID时返回所有表。

CREATE DEFINER=`root`@`localhost` PROCEDURE `SLICE_GET`(`slice_id` int)
BEGIN
SELECT *
FROM `thesis_db`.`SLICE_INFO`
WHERE (SLICE_ID = `slice_id` OR `slice_id` IS NULL);
END

我在ms-sql中使用了相同的想法多年但它似乎不适用于mysql,因为无论传递哪个ID,该过程都会返回整个表。 我在这里缺少什么?

1 个答案:

答案 0 :(得分:0)

这是一种在mysql中编写程序的方法

DELIMITER $$     
CREATE PROCEDURE `name of procedure` (x CHAR(1), D1 DATE, D2 DATE)  
 BEGIN
SELECT name of columns you want to display
FROM table name
WHERE SLICE_ID= x
OR SLICE_ID IS NULL;
END
$$

注意:此外,mysql不区分大小写意味着所有大写或小小都不会影响它。

分隔符用于:  如果使用mysql客户端程序定义包含分号字符的存储程序,则会出现问题。

默认情况下,mysql本身将分号识别为语句分隔符,因此必须临时重新定义分隔符以使mysql将整个存储的程序定义传递给服务器。