1

我有一个名为的表INTER,我想使用一个过程将一些数据传输INTERFINAL(一个已经创建且为空的新表)。

我必须使用序列作为FINAL表的主键。INTER是父表,它的所有列都存在于FINAL.

我创建了一个序列M_SQ。这是我尝试过的:

create or replace 
PROCEDURE STAGING_TO_CUSTOMER
    AS
     BEGIN
         INSERT INTO FINAL (C_ID,C_NAME,C_PHONE,C_ADDRESS)
         SELECT M_SQ.NEXTVAL,C_NAME,C_PHONE,C_ADDRESS FROM INTER;
         COMMIT;
         EXCEPTION
         WHEN OTHERS THEN
         ROLLBACK;
     END;   

此过程已编译,但没有记录传输到FINAL.

有人可以帮忙吗?我正在使用 sqldeveloper 11g。

4

2 回答 2

0

您不需要存储过程 - 您可以按原样运行命令:

INSERT INTO FINAL (C_ID,C_NAME,C_PHONE,C_ADDRESS) SELECT M_SQ.NEXTVAL,C_NAME,C_PHONE,C_ADDRESS FROM INTER; 
COMMIT;
于 2013-04-12T21:20:41.000 回答
0

您实际上必须运行该程序才能执行其中的操作:

BEGIN
    STAGING_TO_CUSTOMER;
END;

此外,您的程序也可能如下所示:

CREATE OR REPLACE PROCEDURE STAGING_TO_CUSTOMER AS
BEGIN
     INSERT INTO FINAL (C_ID,C_NAME,C_PHONE,C_ADDRESS)
     SELECT M_SQ.NEXTVAL,C_NAME,C_PHONE,C_ADDRESS FROM INTER;
     COMMIT;
     EXCEPTION
     WHEN OTHERS THEN
         ROLLBACK;
         RAISE;
END;

所以你知道如果有什么事情发生。

于 2013-04-12T22:06:56.877 回答