我正在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,该过程都会返回整个表。 我在这里缺少什么?
答案 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将整个存储的程序定义传递给服务器。