问题描述
- 检查项目编号是否为空
- 检查项目编号的长度是否等于 5 个字符
- 检查商品描述是否为空
- 检查商品描述的长度是否少于 240 个字符。
代码将验证表中每条记录的所有上述条件。如果任何记录的上述任何验证失败,则该特定记录的状态将更改为“V”并打印错误消息,其中错误消息将显示上述验证失败的条件。
例如:对于特定记录,如果项目编号为空,则特定记录的状态将更新为“V”,错误消息将打印为“项目编号为空,因此状态更新为 V” '.
现在我可以处理以下场景
- 使用 sequence_no、error_message 和 error_data 创建一个表 error_log。
- 错误消息将包含实际的错误消息,错误数据将包含所有数据的串联值。
- 当出现错误时,错误消息应在error_message列的error_log表中捕获,error_data应具有所有列的串联值,即error_data 应该将验证失败的记录列的数据串联起来。
你能帮我如何捕获error_log表中的错误信息以及如何连接error_message表的error_data列中的错误记录列数据
解决方法
您描述的场景最好通过适当的表设计和使用约束来处理,这将始终强制执行这些条件。定义列长度以满足您的要求(5 个字符、240 个字符)或使用 NOT NULL 约束,您将永远需要这样的过程。如果这是不可能的,那么考虑一个简单的 INSERT as SELECT
命令可以完成你所描述的:
insert into error_table
(error_date,error_pk,error_message)
select sysdate,[data_table.primary_key],'field A is too long'
from data_table where length(field_a) > 5;
对于要检查的每个条件,您都需要一个插入语句。此外,我只会存储每个数据行的主键,而不是所有数据的副本,除非您需要跟踪数据随时间的所有更改。