レコードの存在を示すOracleの関数、またはこれを実現するためのその他の有用なテクニックはありますか?UPDATEレコード(存在する場合)。そうでない場合はOracleのINSERT
編集:私がやったMERGE文を使用して:
MERGE
INTO lims_min.mytab src
USING lims_min.mytab tgt
ON ( src.col1 = tgt.col1
AND tgt.col1 = p_val1
AND src.col2 = tgt.col2
AND tgt.col2 = p_val2
)
WHEN MATCHED
THEN
UPDATE
SET tgt.col3=p_val3,
tgt.col4=p_val4
WHEN NOT MATCHED
THEN
INSERT (col1, col2, col3, col4)
VALUES (val1, val2, val2, val4);
私はCOL3が無効識別子であるというエラーを取得します。タイプミスがなく、既存のcolumn.p_val1、p_val2、p_val3およびp_val4はストアドプロシージャに渡される文字列パラメータです。私は問題がこれらのパラメータにあるかもしれないと思っています、おそらくWHEREステートメントの中に置くべきでしょうか? アイデア
Oracleの10、私が得た "PL/SQL:ORA-00904: ""。" P COL3 ":無効な識別子" – sarsnake
私はあなたが必要だと思います"MERGE INTO tgt"(srcではない) - それらを切り替えます。私はあなたのsrcテーブルに参加する必要はないと思う - ちょうど指定する:ON(src.col1 = p_val1とsrc.col2 = p_val2) – Gerrat
うわー、良い1つのジェラート!ありがとうございました。かなり汚い – sarsnake