MYSQL Хранить процедуру, как SQL SERVER с ЕСЛИ В ДРУГИХ УСЛОВИЯХ - PullRequest
1 голос
/ 17 апреля 2020
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

в MySQL Не знаю, как это сделать, я в Google, но не получил никакого ответа, пожалуйста, помогите мне ......

Я хочу, чтобы, если я передаю имя клиента, то я получить в соответствии с данными имени клиента, если я передал ноль, то я получил все данные клиента

на sql сервере, это работает для меня, но как это сделать на mysql не знаю, потому что я использую jsp и бэкэнд mysql.

Ответы [ 2 ]

1 голос
/ 17 апреля 2020

У вас есть ошибка в вашем коде, это должно быть ОТ, а не форма.

В MySQL эта процедура работает как задумано

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 ;
0 голосов
/ 27 апреля 2020

НБК, сэр, ответьте на мой вопрос, спасибо. 1001 *

...