首页 > 解决方案 > mySQL 8 存储过程错误代码:1241。操作数应包含 1 列

问题描述

在 mySQL 8.022 上,以下过程在运行时失败并出现以下错误:

错误代码:1241。操作数应包含 1 列

我看不到任何操作数包含超过 1 列的位置。结果应该是来自第一个或第二个内部选择的 json 对象。

提前感谢您的帮助。

DELIMITER $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `GetLender`(IN lender_id BIGINT, IN source_app VARCHAR(10))
BEGIN
SELECT JSON_OBJECT(
   'lender', if (source_app = 'pro',
        (select JSON_OBJECT(
            'id', ldr.ID,
            'accountId', ldr.ACCOUNT_ID,
            'name', JSON_OBJECT(
                'orgName', ldr.NAME
            ),
            -- 'sortValue', ldr.notification_id,     /* Note: notification_id does not exist
            'primaryAddress', JSON_OBJECT(
                'addrLine1', ldr.STREET_ADDR,
                'city', ldr.CITY,
                'stateOrProvince', ldr.STATE,
                'zip', JSON_OBJECT(
                    'zip1', ldr.ZIP
                )
            ),
            'mortgageClause', ldr.MORTGAGE_CLAUSE,
            'mortgageClauseType', ldr.MORTGAGE_CLAUSE_TYPE,
            'businessId', ldr.BUSINESS_ID,
            'active', (ldr.ACTIVE = 1, true, false),
            'addrQuality', IF(ldr.STREET_ADDR IS NULL, 0, 1) + IF(ldr.CITY IS NULL, 0, 1) +
                            IF(ldr.STATE IS NULL, 0, 1) + IF(ldr.ZIP IS NULL, 0, 1) +
                            IF(ldr.BUSINESS_ID IS NULL, 0, 1),
            'timesUsedByAccount', ldr.TIMES_USED
        )
        from LENDERS ldr
        where ldr.ID = lender_id

        ), -- else

        (select JSON_OBJECT(
            'name', org.NAME,
            'primaryAddress', JSON_OBJECT(
                'addrLine1', org.STREET_ADDRESS,
                'city', org.CITY,
                'stateOrProvince', org.STATE,
                'zip', JSON_OBJECT(
                    'zip1', org.ZIP
                ),
                'unparsedAddress', org.FULL_ADDRESS
            ),
            'businessId', org.BUSINESS_ID,
            'type', org.TYPE
        )
        from ORGANIZATIONS o
        where org.ID = lender_id
        ) -- END SELECT
    ) -- end if (source_app =
);
END$$
DELIMITER ;

标签: mysqljson

解决方案


推荐阅读