0

トリガー内でUPDATEステートメントを動的に作成したいので、一時変数と長さ関連の関数、および一時変数を使用してUPDATEステートメントのフィールド/更新された値を指定するためのヘルプが必要です。

stSQL as string
stSQL = ""

IF FieldA=<criteria> then
 stSQL = "FieldB = we_ci_db.dbo.ztblTest.FieldA"
endif

IF FieldG=<criteria> then
 if len(stSQL)>0 then stSQL=stSQL & " AND "
 stSQL = "FieldH = we_ci_db.dbo.ztblTest.FieldF"
else
 if len(stSQL)>0 then stSQL=stSQL & " AND "
 stSQL = "FieldH = we_ci_db.dbo.ztblTest.FieldG"
endif

UPDATE ztblTest
SET stSQL
WHERE TestID IN (SELECT DISTINCT TestID FROM inserted)
4

1 に答える 1

2

IF文字列を作成したり、動的SQLを使用したり、これらすべての条件を設定したりする必要があるようには思えません。2つの単純なインラインCASE式がそれを行うようです:

UPDATE z
SET FieldB = CASE WHEN i.FieldA = <criteria> THEN i.FieldA ELSE i.FieldB END,
    FieldH = CASE WHEN i.FieldG = <criteria> THEN i.FieldF ELSE i.FieldG END
FROM dbo.ztblTest AS z
INNER JOIN inserted AS i
ON z.TestID = i.TestID;
于 2012-09-05T11:43:53.360 に答える