提问人:Anggelaaa 提问时间:6/7/2023 更新时间:6/7/2023 访问量:51
如何使用if语句编写mysql存储过程?
How to write a mysql stored procs using if else statement?
问:
我存储的进程有问题。所以基本上我必须在它满足条件时调用这个存储的 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')
它应该显示所选的行,但是,唯一出现的是这条消息。我不知道我做错了什么。所以,我希望对任何知道的人有所帮助。提前致谢。
答: 暂无答案
评论