sql - 在表中的每条记录中创建数据验证的最简单方法是什么?
问题描述
我最近项目的逻辑是,当用户通过 csv 输入信息时,我的 CTL 文件会将数据从 csv 检索到临时表,我想创建一个数据验证脚本来验证临时表中的每个数据记录,然后再将其传输到主表。
解决方案
我可能会创建一个程序来抓取临时表的块,检查它们,然后将它们插入基表中。就像是:
DECLARE
TYPE lt_toValidate IS TABLE OF temp_table%ROWTYPE INDEX BY PLS_INTEGER;
lc_fetchLimit CONSTANT INTEGER := 5000;
l_tToVal lt_toValidate;
CURSOR c_toVal IS
SELECT *
FROM temp_table;
BEGIN
OPEN c_toVal;
LOOP
FETCH c_toVal
BULK COLLECT INTO l_tToVal
LIMIT lc_fetchLimit;
EXIT WHEN l_tToVal.COUNT = 0;
FOR i IN 1..l_tToVal.COUNT LOOP
IF NOT(is_record_valid()) THEN
l_tToVal.DELETE(i);
END IF;
END LOOP;
FORALL i IN INDICES OF l_tToVal
INSERT INTO base_table (col1, col2, col3) VALUES (l_tToVal(i).col1, l_tToVal(i).col2, l_tToVal(i).col3);
END LOOP;
END;
您只需要替换is_record_valid()
为您用来确定有效性的任何内容,并且显然替换为您的表和列名称。
推荐阅读
- python - scipy fft 返回空虚部
- angular - 运行 ng e2e 时出现此错误:找不到 update-config.json
- reactjs - 将子组件保存在数组中并使用它的道具搜索组件是否可以?
- c# - dataGridView 中的 Alpha 背景替换为白色背景(第一次数据填充)
- java - 在 JPA 实体上应用 Jackson 的 Stakover 流错误以生成 JSON
- python - 如何在 Python 中使用 selenium 提取“查看更多”中的文本?
- java - 动态更新哈希图中值的特定部分
- php - Laravel Nova 无法在实时服务器上呈现登录页面
- html - 使引导列的内容溢出而不是增长
- vuejs2 - Vue 类组件中的 FullCalendar