2

2 つのテーブル、payments_received とpayments_processed があるとします。PL/SQL で変数を宣言して、あるテーブルから別のテーブルにデータをコピーしたいと考えています。両方のテーブルには、payor_name など、同じ値を保持するフィールドがあります。%TYPE ("from" または "to") を定義するために使用するテーブルはどれですか?

PROCEDURE some_proc AS

  -- value coming FROM payments_received
  -- value going TO payments_processed

  v_payor_name  payments_received.payor_name%TYPE;
    -- OR
  v_payor_name  payments_processed.payor_name%TYPE;

BEGIN

  SELECT payor_name INTO v_payor_name
    FROM payments_received
   WHERE payment_id = some_payment_id;

  UPDATE payments_processed
     SET payor_name = v_payor_name
   WHERE processed_id = some_processed_id;

END some_proc;

いくつかのベスト プラクティス ガイダンスを探しましたが、%TYPE/%ROWTYPE の使用に関するこの側面を実際にカバーしていると思われるものは見つかりませんでした。

4

2 に答える 2

1

誰かがそれについて本当に厳密にしたい場合は、両方を持つことができます:

PROCEDURE some_proc AS

  -- value coming FROM payments_received
  -- value going TO payments_processed

  v_payor_name_source  payments_received.payor_name%TYPE;
  v_payor_name_target  payments_processed.payor_name%TYPE;

BEGIN

  SELECT payor_name INTO v_payor_name_source
    FROM payments_received
   WHERE payment_id = some_payment_id;

  v_payor_name_target := v_payor_name_source;

  UPDATE payments_processed
     SET payor_name = v_payor_name_target
   WHERE processed_id = some_processed_id;

END some_proc;

しかし、私はこれをやり過ぎだと考えています。

于 2013-04-04T02:58:27.940 に答える