MySQL Else If语句未执行
无论我创建什么MySQL过程,第二条ELSE IF语句都返回零结果。单独运行每个Select语句时都会返回一个结果。我认为我的语法没有问题。我很抱歉,如果这是一个简单的修复。请帮忙MySQL Else If语句未执行,mysql,if-statement,stored-procedures,Mysql,If Statement,Stored Procedures,无论我创建什么MySQL过程,第二条ELSE IF语句都返回零结果。单独运行每个Select语句时都会返回一个结果。我认为我的语法没有问题。我很抱歉,如果这是一个简单的修复。请帮忙 DELIMITER $$ CREATE PROCEDURE TEST(type VARCHAR(7), cat TINYINT) BEGIN IF type = 'coffee' THEN Select * FROM specific_coffee WHERE id=cat; E
DELIMITER $$
CREATE PROCEDURE TEST(type VARCHAR(7), cat TINYINT)
BEGIN
IF type = 'coffee' THEN
Select * FROM specific_coffee WHERE id=cat;
ELSEIF type = 'goodies' THEN
Select * FROM non_coffee_products WHERE id=cat;
END IF;
END $$
程序文本是正确的 id | val -: | --: 2 | 222 小提琴 检查数据和参数。分隔符$$ 创建程序测试(
type
VARCHAR(7),cat TINYINT)
开始
如果键入='coffee',则
选择“1”;
如果键入“goodies”,则
选择“2”;
如果结束;
结束$$
您可以使用类型,如类型
嗨!这是不可复制的,因为我们没有您的表格。您能否提供表定义,向这些表添加一些数据,然后告诉我们运行此过程需要哪些数据?这确实应该在应用程序代码中完成,或者更好,通过重新构造架构来避免。我已经检查了参数和数据。我已经使用phpmyadmin工具手动输入了数据,用于测试运行过程。第二条else if语句不返回任何内容。如果我通过手动键入并分别运行每个select语句来分别运行它们,则两个select语句都会返回结果。只有在存储过程中运行时才会出现问题。使用CLI进行测试-检查过程代码,使用不同参数生成的结果。。。也许是phpmyadmin的问题?是的,是我的参数。我传递的字符串大于我的varchar(7)参数大小。谢谢你,阿基娜。
CREATE TABLE specific_coffee
SELECT 1 id, 11 val
UNION ALL
SELECT 2,22
CREATE TABLE non_coffee_products
SELECT 1 id, 111 val
UNION ALL
SELECT 2,222
CREATE PROCEDURE TEST(type VARCHAR(7), cat TINYINT)
BEGIN
IF type = 'coffee' THEN
Select * FROM specific_coffee WHERE id=cat;
ELSEIF type = 'goodies' THEN
Select * FROM non_coffee_products WHERE id=cat;
END IF;
END
CALL TEST ('coffee', 1)
id | val
-: | --:
1 | 11
CALL TEST ('goodies', 2)
id | val
-: | --:
2 | 222