Привет Я пытаюсь выбрать несколько строк, вызывая процедуру через CallableStatement. Пока я пытаюсь заполнить набор результатов в поле со списком, код возвращает ошибку следующим образом.Ошибка: subquery Возвращает несколько строк
Java Ошибка:
java.sql.SQLException: Subquery returns more than 1 row
хранимых процедур:
CREATE DEFINER=`user_name`@`%` PROCEDURE `GET_USER_PROFILE`(
IN p_user_id VARCHAR(150),
IN p_role VARCHAR(150),
OUT p_user_data VARCHAR(200),
OUT p_city VARCHAR(150),
OUT p_state VARCHAR(150),
OUT p_country VARCHAR(150),
OUT q_Msg VARCHAR(150))
BEGIN
DECLARE available INT DEFAULT 0;
SET p_city = (SELECT CITY FROM countries GROUP BY CITY);
SET p_state = (SELECT STATE FROM countries GROUP BY STATE);
SET p_country = (SELECT COUNTRY FROM countries GROUP BY COUNTRY);
SELECT COUNT(EMAIL) INTO available FROM STAFF_PROFILE WHERE EMAIL = p_user_id AND ROLE = p_role;
IF(available=1) THEN
SET p_user_data = (SELECT * FROM STAFF_PROFILE WHERE EMAIL = p_user_id AND ROLE = p_role);
else
SET q_Msg = 'USER_LOGGED_FIRST';
END IF;
END
Мне не нравится внешний вид этого ... '" SET p_city = (SELECT CITY FROM countries GROUP BY CITY); "' предположительно, что запрос может возвращать более одной строки (почему бы вы GROUP BY в противном случае), который вы назначаете VARCHAR, что бы вы ожидали, что VARCHAR будет удерживаться? – DaveH
@DaveHowes Мне нужны значения для заполнения в поле со списком городов, штатов и стран в передней части – randxy
Проблема в вашем SQL, а не в коде Java. Проверьте свой SQL в каком-то инструменте – Ilya