Как мы можем использовать mysql_affected_rows() в хранимой процедуре

Как мы можем использовать mysql_affected_rows()  в хранимой процедуре.

Ответы

Ответ 1

Используйте информационную функцию ROW_COUNT().

ROW_COUNT() возвращает количество строк изменен, удален или вставлен последнее утверждение, если это было ОБНОВЛЕНИЕ, DELETE или INSERT. Для других операторов, значение может не быть осмысленным.

Значение ROW_COUNT() такое же, как значение из Функция mysql_affected_rows() C API и количество строк, которое mysql клиент отображает следующую инструкцию выполнение.

Ответ 2

Пример

BEGIN
DECLARE countRow INT;
DECLARE roomTypeId INT;
        INSERT INTO room_type (room_type)
SELECT * FROM (SELECT paramRoomType) AS tmp
WHERE NOT EXISTS (
    SELECT room_type_id FROM room_type WHERE room_type = paramRoomType 
) LIMIT 1;
SET countRow =  ROW_COUNT();

IF(countRow >  0) THEN
    SET roomTypeId =  LAST_INSERT_ID();
    INSERT hotel_has_room_type (hotel_id,room_type_id) VALUES (paramHotelId,roomTypeId);
END IF;
END

Ответ 3

Вы не можете использовать mysql_affected_rows() в хранимой процедуре, так как это функция C API. Вы можете использовать функцию FOUND_ROWS(), которая дает аналогичную функциональность. Подробнее см. Ссылку .