TestDome SQL存储过程ParseMessages题目得分50%错误原因排查
代码存在的两个核心问题
- SUBSTRING函数参数错误
SQL Server的SUBSTRING函数为1起始索引,你写的SUBSTRING(m.data, 0, 15)实际只会取到data字段的前14个字符,不符合取前15个字符的要求,正确写法为SUBSTRING(m.data, 1, 15)。 - 多余的存储过程执行语句
题目仅要求创建名为ParseMessages的存储过程,测试框架会自动调用该存储过程完成验证,你在代码末尾添加的EXEC ParseMessages属于多余语句,会干扰测试逻辑的正常执行。
修正后的参考代码
CREATE PROCEDURE ParseMessages AS BEGIN INSERT INTO notifications (id, message) SELECT m.id, m.data FROM messages m WHERE m.type = 'notification' AND m.id NOT IN (SELECT n.id FROM notifications n); INSERT INTO alerts (id, shortMessage) SELECT m.id, SUBSTRING(m.data, 1, 15) FROM messages m WHERE m.type = 'alert' AND m.id NOT IN (SELECT n.id FROM alerts n); END GO
内容的提问来源于stack exchange,提问作者Matteo Russo
相关产品推荐
相关产品推荐

