1

私の目標は次のとおりです。3つのテーブルdev1、PICK1、rul1があり、それらの間で情報を相互作用させる必要があります。例は次のとおりです。selectrul1テーブルの結果に従って、dev1テーブルから特定の行を取得し、PICK1に挿入します。

次に、テーブルdev1の行を更新して、rul1からの次の選択で再度選択されないようにする必要があります。

テーブルの構造は次のとおりです。

dev1 {
[delivery]
[inlist]
[scot]}

rul1{
[group],
[field],
[logical_condition]
[value]}

PICK1 {
[id_delivery]
[group_num]
[lock]}

これらは私がrul1に持っている値の一部です

[group]  [field]    [logical_condition]  [value]
  1         scot        =                   1
  1         inlist      =                   0
  2         scot        =                   2
  2         inlist      =                   0
  3         scot        =                   3

次に、このストアドプロシージャを実行すると、次のようになります。

BEGIN

DECLARE @ max int, @ count int<br />
SET @ count = 1<br />
SELECT @ max = max ([group]) from rul1 group by [group]

while (@ count <= @ max)<br />
BEGIN<br />
select field + '' + logical_condition + '' + value as [rule] from rul1 where [group]=  @count<br />
SET @ count = (@ count + 1)<br />
END

END

各グループ(1、2、3)についてこの結果が得られます。

scot = 1
inlist = 0

scot = 2
inlist = 0

scot = 3

次に、これらの結果を文字列に入れて、「where」句の一部にして、dev1から正しい行を選択し、PICK1に挿入します。

次に、dev1で更新します。これは、プロシージャのwhileを実行するたびに発生する必要があると思いますが、ストアドプロシージャをネストする方法がわかりません。

これが他の方法で完了できる場合。

すべての支援を歓迎します

どうもありがとうございます

4

0 に答える 0