我有一个名为INTER
的表,我希望使用一个过程将一些数据从INTER
传输到FINAL
(一个已经创建并且为空的新表)。
我必须使用sequence作为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。
答案 0 :(得分: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;
答案 1 :(得分: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;
所以你知道是否有事情发生。