Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL Else If语句未执行_Mysql_If Statement_Stored Procedures - Fatal编程技术网

MySQL Else If语句未执行

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

无论我创建什么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;
    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