我试图将行插入table1 select * from table2,最后使用oracle sql developer中的函数从table2中删除行。我不知道怎么做。
以下是我的职能:
create or replace FUNCTION DELETEROW(GODOWN_DIST_CODE IN
TEST_TABLE.GODOWN_DIST_CODE%TYPE) return varchar2
AS
returned_value varchar2(50);
BEGIN
begin
INSERT INTO TEST_TABLE_BACKUP SELECT * FROM TEST_TABLE WHERE
GODOWN_DIST_CODE=GODOWN_DIST_CODE;
DELETE TEST_TABLE WHERE GODOWN_DIST_CODE = GODOWN_DIST_CODE;
INSERT INTO NEW_TABLE_BACKUP SELECT * FROM NEW_TABLE WHERE GODOWN_DIST_CODE
= GODOWN_DIST_CODE;
DELETE FROM NEW_TABLE WHERE GODOWN_DIST_CODE = GODOWN_DIST_CODE;
exception
WHEN no_data_found THEN
returned_value := '#';
end;
RETURN returned_value;
END;
答案 0 :(得分:0)
试试这个: -
CREATE OR REPLACE PROCEDURE TABLE2_TO_TABLE1
IS
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO TABLE1(
Field1,
Field2,
Field3
)
SELECT Field1,
Field2,
Field3
FROM TABLE2';
EXECUTE IMMEDIATE 'DELETE TABLE2 where rownum != 0';
END TABLE2_TO_TABLE1;
执行程序
BEGIN
TABLE2_TO_TABLE1;
END;
/
答案 1 :(得分:0)
根据我们的讨论,我为您提出此解决方案。即使我没有发现需要FUNCTION
使用FUNCTION
显示exmaple。此外,我已将删除逻辑写入Procedure
,并且根据删除语句的成功,Return
值在变量var
中被捕获,并作为OUT paramater
发送给您可以使用。
功能:
CREATE OR REPLACE FUNCTION confirm_ckh
RETURN VARCHAR
AS
BEGIN
RETURN ('#');
END;
步骤:
CREATE OR REPLACE PROCEDURE DELETEROW (
GODOWN_DIST_CODE IN TEST_TABLE.GODOWN_DIST_CODE%TYPE,
var OUT varchar2) <-- Out parameter to get the return value
AS
BEGIN
BEGIN
INSERT INTO TEST_TABLE_BACKUP
SELECT *
FROM TEST_TABLE
WHERE GODOWN_DIST_CODE = GODOWN_DIST_CODE;
IF SQL%ROWCOUNT > 0
THEN
DBMS_OUTPUT.put_line ('Insert Success TEST_TABLE_BACKUP');
var:=confirm_ckh;
END IF;
DELETE TEST_TABLE
WHERE GODOWN_DIST_CODE = GODOWN_DIST_CODE;
IF SQL%ROWCOUNT > 0
THEN
DBMS_OUTPUT.put_line ('Deleted records from TEST_TABLE ');
var:=confirm_ckh;
END IF;
INSERT INTO NEW_TABLE_BACKUP
SELECT *
FROM NEW_TABLE
WHERE GODOWN_DIST_CODE = GODOWN_DIST_CODE;
IF SQL%ROWCOUNT > 0
THEN
DBMS_OUTPUT.put_line ('Insert Success for NEW_TABLE_BACKUP');
var:=confirm_ckh;
END IF;
DELETE FROM NEW_TABLE
WHERE GODOWN_DIST_CODE = GODOWN_DIST_CODE;
IF SQL%ROWCOUNT > 0
THEN
DBMS_OUTPUT.put_line ('Deleted records from NEW_TABLE ');
var:=confirm_ckh;
END IF;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
null;
END;
END;