Oracle:使用给定的数据结构规则验证输入数据

时间:2017-03-30 16:53:41

标签: oracle

我有一个叫做数据规则的表。下面给出一些解释。

Data|GroupNum|GroupType|GroupMinOcc|GroupMaxOcc|DataStatus|DataMinOccWithinGroup|DataMaxOccurenceWithinGroup|IDX
ABC |GroupA  |Mandatory|  1        |    1      | Mandatory|     1               |       1                   |1
DEF |GroupB  |Mandatory|  1        |    1      |Mandatory |     1               |       1                   |2
GHI |GroupC  |Mandatory|  1        |    1      |Mandatory |     1               |       1                   |3
JKL |GroupD  |Optional |  0        |    1      |Optional  |     0               |       1                   |4
FFF |Group1  |Optional |  0        |    1      |Mandatory |     1               |       1                   |5
RRR |Group1  |Optional |  0        |    1      |Optional  |     0               |       2                   |6
MMM |Group2  |Optional |  0        |    2      |Mandatory |     1               |       1                   |7
PPP |Group2  |Optional |  0        |    2      |Optional  |     0               |       1                   |8
CCC |Group3  |Optional |  0        |    2      |Optional  |     0               |       2                   |9
SSS |Group4  |Mandatory|  1        |    2      |Mandatory  |    1               |       1                   |10
TTT |Group4  |Mandatory|  1        |    2      |Mandatory  |    0               |       2                   |11

让我先解释一下这个数据规则。

1)一个组可以有多个数据记录 在这里你可以看到GroupA只有ABC数据而第1组有FFF和RRR数据。

2)一组可以是强制性的和可选的。这意味着如果一个群体是强制性的,它肯定会出现其次如果是强制性的,那么它的数据记录也具有强制和可选状态。

例如:检查group4 该组是强制性的,其第一个数据SSS也是强制性的。这意味着该组是强制性的,当它发生时,也应该发生这种数据。但该组中的第二个数据是TTT,这是可选的。无论组是强制性的,但此数据在强制组内是可选的,因此它可以发生0到2次 让我们说这个组出现两次......看起来像这样

Group4示例:有效

    SSS
    TTT
    TTT
    SSS
    TTT

无效的Group4发生

SSS
SSS
TTT
TTT
TTT

它无效,因为在第二次出现TTT组时发生了3次但不应超过2次

3)如果组是可选的,则可以显示或不显示。

所以正如你所看到的,GroupD,Group2和Group3是可选的,所以在GroupC之后,Group4数据也可以输入数据。就像这样

ABC
DEF
GHI
SSS
TTT

我想从他们各自的组中的数据规则表中捕获确切的IDX号码,如果输入数据不遵循数据规则表中提到的规则。

For example 1st Input Data Example

ABC
DEF
GHI
JKL
JKL
SSS

正如您在此处所见,JKL是可选组中的可选数据。但是如果这个可选组出现这个JKL应该只出现一次。但它来了两次。所以我想要返回IDX 4号。

2nd Data Example.

ABC
DEF
GHI
TTT

这里它应该返回IDX编号10.因为从强制group4强制数据SSS丢失,在数据规则中它的IDX是10

3rd Example

ABC
DEF
GHI
SSS
SSS
TTT

在此,SSS的IDX返回值应为10.因为它发生了两次。正如你在数据规则中看到的那样,整个Group4只能重复一次,每当它发生时,SSS只会出现一次。那是一个错误

许多错误也可能同时发生。 SO ID号需要仅从数据规则表中返回各自的组数据。

在输入数据中,只有一列只包含数据记录。

注意:组数据将仅按照从上到下的数据规则中提到的顺序出现。并且可以在数据规则表中提到的定义的基础上出现或不出现。

任何建议......我可以实现这个目标吗?

0 个答案:

没有答案