2014-11-30 2 views
0

Оно работает, если я ввожу значение, другое. он вернул мне значение текста сообщения «Это не существует»MySQL хранимая процедура не возвращает значение

Если я ставлю точное значение, которое находится в моей базе данных, оно выполняется только, но не возвращает никакого значения. Зачем?

CREATE PROCEDURE SPBus ( 
     IN BUS VARCHAR (20) 
    ) 
    BEGIN 

    START TRANSACTION; 
    IF NOT EXISTS (SELECT * FROM Ebook WHERE TituloEbook LIKE CONCAT('%',BUS,'%')) THEN 
     SIGNAL SQLSTATE '45000' 
     SET MESSAGE_TEXT= 'That ebook doesnt exists'; 
    ELSE 
     SELECT * FROM Ebook WHERE TituloEbook LIKE CONCAT('%',BUS, '%'); 
    END IF; 
    COMMIT; 
END; 

ответ

0

Потому что тогда еще случае процедура будет выполняться, когда вы не устанавливая MESSAGE_TEXT. Попробуйте это:

CREATE PROCEDURE SPBus ( 
     IN BUS VARCHAR (20) 
    ) 
    BEGIN 

    START TRANSACTION; 
    IF NOT EXISTS (SELECT * FROM Ebook WHERE TituloEbook LIKE CONCAT('%',BUS,'%')) THEN 
     SIGNAL SQLSTATE '45000' 
     SET MESSAGE_TEXT= 'That ebook doesnt exists'; 
    ELSE 
     SELECT * FROM Ebook WHERE TituloEbook LIKE CONCAT('%',BUS, '%'); 
     SET MESSAGE_TEXT = 'That ebook exists'; 
    END IF; 
    COMMIT; 
END; 
+0

что код это только говорит мне «что книга существует», но я хочу, чтобы увидеть название книги ... –

+0

Затем вы должны выбрать имя в переменную и сцепить его к сообщению. Узнайте больше о выборе здесь: http://dev.mysql.com/doc/refman/5.0/en/select-into.html –

+0

Я делаю это ... показать, что я публикую свою базу данных –

Смежные вопросы