.NETで実行するOracle SQLの作成には何らかの助けが必要です。ヘルプ条件付のOracle SQLの作成
テーブルの列を更新する必要がありますが、同じ値を更新する値は2つの異なる値に依存します。一例を与えるために:
点心は、x = 1
intCountにsqlcmd = "Update tableA Set col1 = :val1, col2 = :val2 Where...."
collcmd.add(sqlcmd)
SELECT col1, col2
FROM tableA
Where .....
If col1 = 0 and col2 = 0 then
sqlcmd = "Update tableB
Set col1 = :value
Where...."
Else
sqlcmd = "Update tableB
Set col1 = :value
Where.."
End If
collcmd.add(sqlcmd)
Next
の文字列 コレクション として点心collCmdとしてsqlcmdのは「collcmd収集のために、ここでの取引と更新を実行します。
明らかに、条件が満たされているSQLにアップデートを配置する必要があります。親切なアドバイス。私はここで非問合せを実行することはできません。なぜなら、更新が失敗した場合、トランザクションのロールバックを実行する必要があるからです。私はすべての更新ステートメントを1つのコレクションに入れ、1つのトランザクションで更新を実行しています。しかし、tableAの値は次の反復で異なる場合があります。
上記の文の前に実行される他のSQLコマンドがあるので、格納されたproc内に同じものを置くことはできません。
sqlcmd = "UPDATE tableB b
IF select a.col1 = 0 and select a.col2 = 0 from tableA a
SET b.col1 = "this value"
ELSE
SET b.col1 = "other value"
WHERE...."
ありがとう:
更新のようなものを行くとSQLを作成する方法はあります。
Where句に関する詳細を教えてください。 –
where句は、まっすぐ前方にあり、主キー(id)のようなものです。 私がここで問題になっているのは、すべてのSQL selectを文字列にロールアップしてコレクションに配置し、コレクション内の各コマンドをトランザクション内で実行して、1つの更新が失敗したときにロールバックメカニズムを持つことができるようにすることです。しかし、上記のステートメントでは、UPDATEコマンドのSELECTクエリの値が必要なので、SELECTクエリの条件を更新に含める必要があります。 – Batuta