私は本当に奇妙なことに立ち往生しています。昨日、次のような手順を作成できました。
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
ありがとう