0

次のように宣言されているカーソルがあります。

DECLARE staging_cur CURSOR FOR
SELECT 
col1, col2, ......
FROM crawl_db.staging_listing
WHERE is_deleted = FALSE;

次に、各行をフェッチし、いくつかのチェックを実行してから、その行を別の (本番) データベースに挿入します

OPEN staging_cur;
the_loop: LOOP

  FETCH staging_cur
  INTO col1_val, col2_val,.....;

  -- perform some checks and some optional inserts
      -- for example, if city with given name is not found in production DB, insert it

  -- insert into production db

END LOOP the_loop;

col1_val, col2_val ...テーブル staging_listing ( ) の対応する列ごとに変数 ( ) を宣言する必要があることに気付きましたcol1, col2....。問題は、このテーブルに 90 ~ 100 列が含まれており、すべての変数を宣言するのが非常に面倒なことです。

これよりも良い方法があるはずです。列の値を保持するために別の変数を宣言することなく、カーソルの現在の行の列にアクセスできる方法はありますか?

4

1 に答える 1

0

行を別のテーブルに挿入する必要がある場合は、INSERT...SELECT ステートメントを使用することをお勧めします。カーソルの使用は避けてください。

INSERT ... SELECT 構文.

于 2013-03-18T07:53:20.027 に答える