在SQL Server中遍历行然后遍历列的想法

时间:2020-05-09 14:47:21

标签: sql loops nested

我有一个复杂的要求,我确实尝试将其推离数据库而没有成功。

我的环境基于Azure数据工厂+ SQL服务器。

基本上,我有一个源表和一个目标表,在从源插入到目标之前,我必须:

  1. 验证每个单元格。验证实际上是复杂的,基于一组动态函数,这些函数根据列数据类型,长度,表等读取验证逻辑,还需要验证哪些列以及它们需要多少列。

  2. 给定的列可能需要多个验证(还有另一个表指定要应用于每个列的验证)。

  3. 如果未通过给定单元格的验证,则需要将其记录到审核表中,并将该值设置为null或空白以允许插入到我的目标表中。

出于说明目的,可以说我只想验证列A是否为整数,作为验证1的一部分,如果其小于150作为验证2的一部分,并且列C不包含字符'A'作为验证验证1.

SourceTable

TargetTable

ErrorLog

我猜你知道为什么我试图将其从SQL中推开。基本上我需要做三个嵌套循环:

  1. 行成行
    1. 环列
    2. 遵守规则

无论我多么努力地思考,我仍然看不到使用基于SET的操作来做到这一点,即使使用循环,我也看不到如何做到这一点。据我所知,您不能在一个循环中嵌套一个循环(更不用说会降低性能)。

我看到的唯一选择是使用INSTEAD-OF-TRIGGER来为每条记录执行此操作,但是我仍然不得不遍历列和规则。

有什么想法吗?

0 个答案:

没有答案