Получение количества строк и возврат его в переменную MySQL

У меня проблема, когда я не могу вернуть количество строк в этой таблице. Я получаю сообщение об ошибке при попытке сохранить количество строк в переменной, а также получаю сообщение об ошибке при попытке вернуть его. Это хранимая функция в MySQL.

Я получаю две ошибки: 1. Не разрешено возвращать набор результатов из функции 2. ROW_COUNT Не существует (не вызывается)

Вот мой код:

BEGIN

declare pageexists int;
declare rowcount int;

select distinct ITU from tblITU
where ITU = inuser; 
SET rowcount = COUNT(*) FROM tblITU;

return rowcount;

END

Заранее спасибо!


person Demetrick Norris    schedule 29.12.2014    source источник


Ответы (1)


Для SELECT вы можете использовать конструкцию FOUND_ROWS (задокументировано здесь):

ВЫБЕРИТЕ SQL_CALC_FOUND_ROWS что-то из вашей_таблицы, ГДЕ что угодно;

ВЫБРАТЬ FOUND_ROWS();

который вернет количество строк в последнем запросе SELECT (или, если первый запрос имеет предложение LIMIT, он вернет количество строк, которое было бы без LIMIT).

Для UPDATE/DELETE/INSERT это конструкция ROW_COUNT.

ВСТАВИТЬ В your_table ЗНАЧЕНИЯ (1,2,3);

ВЫБЕРИТЕ ROW_COUNT();

который вернет количество затронутых строк.

Цитата из: Имеет ли Mysql эквивалент @@ROWCOUNT как в mssql?

person Jasper    schedule 29.12.2014
comment
Я пробовал этот. Кажется, он не работает, или я не использую его правильно. Я пробовал это: НАЧНИТЕ объявлять pageexists int; объявить число строк int; выбрать отдельный ITU из tblITU, где ITUusers = inuser; SELECT SQL_CALC_FOUND_ROWS * FROM tblITU; количество строк = SELECT FOUND_ROWS(); вернуть количество строк; КОНЕЦ - person Demetrick Norris; 29.12.2014
comment
Этот по-прежнему дает Не разрешено возвращать набор результатов из ошибки функции. - person Demetrick Norris; 29.12.2014
comment
Извините за это, попробуйте следующее: SET rowcount = (выберите отдельный счетчик (ITU) из tblITU, где ITUusers = inuser); ВОЗВРАТ количества строк; - person Jasper; 29.12.2014
comment
Ой, я забыл про DISTINCT. Это должно сделать это: SET rowcount = (SELECT COUNT(0) FROM (выберите отдельный счетчик (ITU) из tblITU, где ITUusers = inuser) AS src); - person Jasper; 29.12.2014
comment
Этот сработал. Спасибо. Но я признаю, что я идиот. Я создал рабочее решение два месяца назад, забыл, что оно у меня есть. - person Demetrick Norris; 29.12.2014