类似SQL SERvER的MYSQL存储过程,带有IF-ELSE条件

类似SQL SERvER的MYSQL存储过程,带有IF-ELSE条件,mysql,mysql-workbench,Mysql,Mysql Workbench,在MySQL中,我不知道怎么做,我在谷歌上搜索它,但没有得到任何答案,请帮助我 我希望通过这种方式,如果我传递客户名称,那么我将按照客户名称数据获取。如果我传递null,那么我将获取所有客户数据 在sql server中,它对我有用,但在mysql中如何操作我不知道,因为我使用的是jsp,后端是mysql。您的代码中有一个错误,它必须来自而不是表单 在MySQL中,此过程按预期工作 Create Procedure spText(IN Cust_Name longtext) begin

在MySQL中,我不知道怎么做,我在谷歌上搜索它,但没有得到任何答案,请帮助我

我希望通过这种方式,如果我传递客户名称,那么我将按照客户名称数据获取。如果我传递null,那么我将获取所有客户数据


在sql server中,它对我有用,但在mysql中如何操作我不知道,因为我使用的是jsp,后端是mysql。

您的代码中有一个错误,它必须来自而不是表单

在MySQL中,此过程按预期工作

Create Procedure spText(IN Cust_Name longtext)

begin

   Declare

     @varWhere varchar(max)= '  WHERE Cust_No is not null ' + Char(13),
     @varSQL varchar(Max)

        SET @varSQL='select * form Customer_Dtls'


        if Cust_Name  is not null
            BEGIN

                 set @varWhere=@varWhere + ' and Custer_Nm like %Cust_Name%' + Char(13)
        end 

   EXEC (@varSQL + @varWhere)

end

nbk sir完美地回答我的问题谢谢你

sir还有一个如何在JSP页面结果集中使用此存储过程请更新我sir请看这里,这里有更多指向它的链接sir获取问题“不支持可调用状态”MYCONNECTION IS String driver=“com.mysql.jdbc.driver”;String url=“jdbc:mysql://localhost:3306/MyNew_db" ; 字符串uname=“root”;字符串pass=“123456”;Class.forName(driver.newInstance();con=DriverManager.getConnection(url、uname、pass);请检查这个小教程,据我所知,它只是一些更多的解释相同。如果它仍然不起作用,请使用源代码提出一个新问题,我们将找到解决方案
DROP procedure IF EXISTS `spText`;

DELIMITER $$

CREATE DEFINER=`root`@`localhost` PROCEDURE `spText`(IN Cust_Name longtext)
BEGIN


    SET  @varWhere = '  WHERE Cust_No is not null ' ;
    SET @varSQL='select * FORM Customer_Dtls ';


        IF Cust_Name  is not null THEN
            set @varWhere= CONCAT(@varWhere, " and Custer_Nm like '%Cust_Name%'");
            END IF;
        SET @SQL= CONCAT(@varSQL , @varWhere);
    PREPARE stmt FROM @SQL;
    EXECute stmt;
end$$

DELIMITER ;