[英]Check if row exists using Mysql store procedure not working
At mysql command prompt, I run: 在mysql命令提示符下,我运行:
SELECT EXISTS (SELECT 1 FROM test1 WHERE name1 like '%Nadiya%')
returns 回报
EXISTS (SELECT 1 FROM test1 WHERE name1 like '%Nadiya%')
1
but following procedure doesn't print as Exists. 但是以下步骤不会显示为“存在”。 I need to get inside IF statement.
我需要进入IF语句。 Please let me know what change could get me inside IF.
请让我知道什么变化可以使我进入IF。
DELIMITER //
CREATE PROCEDURE verifyAndUpdate30(in searchName varchar(12), in searchId bigint, inout result int)
BEGIN
IF ( SELECT EXISTS (SELECT 1 FROM test1 WHERE name1 like '%searchName%') ) THEN
SELECT 'EXISTS';
UPDATE TEST SET testFlag=1 WHERE id=searchId;
SET result=1;
ELSE
SELECT 'DOES NOT EXISTS';
END IF;
SELECT result;
END
//
DELIMITER ;
Call to procedure: 调用程序:
SET @increment = 0;
call verifyAndUpdate30('Nadiya', 5532, @increment);
You need to construct the LIKE
string the hard way, using CONCAT('%', searchName, '%')
: 您需要使用
CONCAT('%', searchName, '%')
艰难地构造LIKE
字符串:
,,,
IF ( SELECT EXISTS (
SELECT 1
FROM test1
WHERE name1 like CONCAT('%', searchName, '%') -- Build %searchName% from parts
) ) THEN
,,,
Since searchName
can be taken as hardcoded string, replace your query this way: 由于
searchName
可以作为硬编码字符串, searchName
可以用以下方式替换查询:
CONCAT('%', searchName, '%')
DELIMITER //
CREATE PROCEDURE verifyAndUpdate30(in searchName varchar(12), in searchId bigint, inout result int)
BEGIN
IF ( SELECT EXISTS (SELECT 1 FROM test1 WHERE name1 like CONCAT('%', searchName, '%')) ) THEN
SELECT 'EXISTS';
UPDATE TEST SET testFlag=1 WHERE id=searchId;
SET result=1;
ELSE
SELECT 'DOES NOT EXISTS';
END IF;
SELECT result;
END
//
DELIMITER ;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.