如何使用if语句编写mysql存储过程?

How to write a mysql stored procs using if else statement?

提问人:Anggelaaa 提问时间:6/7/2023 更新时间:6/7/2023 访问量:51

问:

我存储的进程有问题。所以基本上我必须在它满足条件时调用这个存储的 procs,但是当我调用它时,它不会显示所选的行。那么我该如何解决这个问题呢?

这是它的样子

DELIMITER $$

USE `testing`$$

DROP PROCEDURE IF EXISTS `SP_SELECT_DATA_DETAIL`$$

CREATE DEFINER=`testing1`@`%` PROCEDURE `SP_SELECT_DATA_DETAIL`(
    IN _Project_No VARCHAR(100),
    IN _status VARCHAR(20)
        
    )
BEGIN
SET @Project_No = _Project_No;
SET @status = _status;

SET @sqlStatement = CONCAT('SELECT A.Project_Description, B.Short_Name, UPPER(IF(A.Project_Status = '' '', "OPEN", A.Project_Status)) AS Project_Status
FROM project_detail A
LEFT JOIN company B ON A.`Customer` = B.`Com_ID`
WHERE 1 = 1 AND 
CASE 
WHEN RTRIM(''',@Project_No,''') = '' THEN RTRIM(''',@Project_No,''') ELSE A.`Project_No` END 
LIKE CONCAT(''%'', RTRIM(''',@Project_No,'''), ''%'')');


IF @status <> "All" THEN
 SET @SqlWhereStatement = CONCAT(' AND A.Project_Status = ''', @Status, '''');
 SET @SqlStatement = CONCAT(@SqlStatement, @SqlWhereStatement);
END IF;

SET @SqlOrderBy =CONCAT(' ORDER BY Project_No DESC ');
SET @SqlStatement=CONCAT(@SqlStatement,@SqlOrderBy);

END$$

DELIMITER ;

然后我试着这样称呼它CALL SP_BOM_DETAILED_SELECT_PROJECT_DETAILS('8023', 'All')

它应该显示所选的行,但是,唯一出现的是这条消息。我不知道我做错了什么。所以,我希望对任何知道的人有所帮助。提前致谢。

mysql if语句 存储过程

评论


答: 暂无答案