簡體   English   中英

錯誤:子查詢返回多個行

[英]Error: subquery Returns more than one row

嗨,我一直在嘗試通過CallableStatement調用過程來選擇多個行。 當我嘗試將結果集填充到組合框中時,代碼將返回錯誤,如下所示。

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

@DaveHowes和@Ilya是正確的,問題出在您的SQL語句中。

可以說,在您的國家/地區表中包含以下內容:

city            state           country
'New York'      'New York'      'USA'
'Los Angeles'   'California'    'USA'
'Chicago'       'Illinois'      'USA'
'Ottawa'        ''              'Canada'

現在,如果我們從您的示例中獲取您的子查詢:

SELECT city FROM countries GROUP BY city

會返回:

city
'New York'
'Los Angeles'
'Chicago'
'Ottawa'

您嘗試將多個結果分配給varchar,因此會出現異常“子查詢返回多於1行”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM