0

私は本当に奇妙なことに立ち往生しています。昨日、次のような手順を作成できました。

create or replace PROCEDURE proc
IS
  CURSOR CUR
  IS
    SELECT * FROM PROVA
    WHERE STATUS = 'X';

BEGIN
  FOR H IN CUR
  LOOP
    BEGIN
      INSERT INTO PROVA2 VALUES H;
      DELETE FROM PROVA WHERE ID = H.ID;
      COMMIT;
    END;
  END LOOP;
END;

PROVA は次のように定義されます。

CREATE TABLE PROVA
   (    "ELEMENTO" VARCHAR2(20 BYTE), 
    "DATO" VARCHAR2(20 BYTE), 
    "NUMERO_TENTATIVI" NUMBER(8,0), 
    "STATUS" VARCHAR2(1000 BYTE), 
    "ID" NUMBER(*,0)
   )

PROVA2 は次のように定義されます。

CREATE TABLE PROVA
   (    "ELEMENTO" VARCHAR2(20 BYTE), 
    "DATO" VARCHAR2(20 BYTE), 
    "NUMERO_TENTATIVI" NUMBER(8,0), 
    "STATUS" VARCHAR2(1000 BYTE), 
    "ID" NUMBER(*,0)
    "DATE_TIME" TIMESTAMP (6) DEFAULT CURRENT_TIMESTAMP
   )

残念ながら、私の間違いです。正しい手順を保存してコミットしなかったため、古い手順に固執しています(挿入を行うときに、すべての列を指定する必要があります...

INSERT INTO PROVA2(bla,bla,bla...) 
      VALUES (bla,bla,bla...);

INSERT 部分をテーブル構造から抽象化したいのですが、どこでも検索しましたが、投稿した最初の PROCEDURE が私に与えるエラーに関する証拠は見つかりませんでした。

 ORA-00947: not enough values

したがって、私の質問は次のとおりです。テーブル X からテーブル Y に完全なレコードを挿入することは可能ですか。テーブル Y には、デフォルト値を持つ DATE_TIME を除いて同じ列があります (変更したくありません...)。

これが面倒ではないことを願っています。インターネット上のあらゆる場所でこれについて検索しましたが、運がありませんでした。

ありがとう。

編集:要約すると、foo、bar、foobarを列として持つテーブルAがあり、foobarにはデフォルト値があります:次を使用して、列としてfoo、barを持つテーブルBからレコード「x」を挿入できますか:

A 値に挿入 x

ありがとう

4

1 に答える 1