【发布时间】:2014-07-16 12:55:19
【问题描述】:
我遇到了一些非常奇怪的事情。 昨天我能够产生这样的程序:
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 中,该表具有相同的列,但 DATE_TIME 具有默认值(我不想修改...) .
我希望这不是乱七八糟的,我在互联网上到处搜索,但没有运气。
谢谢。
编辑: 总结一下: 给定一个以 foo,bar,foobar 作为列的表 A,其中 foobar 具有默认值:我可以使用以下方法从以 foo,bar 作为列的表 B 插入记录“x”吗:
插入A值x
谢谢
【问题讨论】: