mysql - 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 ;
解决方案
推荐阅读
- c++ - 如何从 Visual Studio 中启动和调试 WSL C++ 二进制文件
- r - 如何从df中添加符合R中for循环条件的行数?
- visual-studio-code - 哪个设置负责使未修改的文件不作为选项卡保留?
- spring-boot - 将测试容器与另一个数据库驱动程序一起使用
- scala - 如果作为依赖项包含(不导入),是否可以自动加载隐式定义
- go - 将查询参数设置为变量的简写
- ios - VENDOR IDENTIFIER 在不同设备上从 App Store 下载的同一个应用程序的异常情况
- typescript - 错误 TS2794:应有 1 个参数,但得到 0。您是否忘记在“Promise”的类型参数中包含“void”?
- ruby-on-rails - 在保存之前更改参数哈希中的值?
- ios - NEHotspotHelper 导致 Xcode 崩溃