【发布时间】:2017-07-05 11:10:51
【问题描述】:
我正在尝试将行插入 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;
【问题讨论】:
-
向观众展示您迄今为止尝试过的无效或错误结果。
-
你
can not在PROCEDURE中使用RETURN。如果你想返回一些东西,你需要创建FUNCTION。FUNCTION和PROCEDURE是两个不同的东西。 -
@XING,我已经创建了上面的函数,当我执行该函数时,所有行都被插入到 TEST_TABLE_BACKUP 和 NEW_TABLE_BACKUP ,但是我正在传递带有一些值的参数并将其用作 where 条件,甚至所有记录正在被删除。
-
@KeyurPanchal,我更新了我的函数,当我使用参数执行函数时,所有行都插入到备份表并从主表中删除所有行,但不使用 where cluase,可以请告诉我我做错了什么。
-
@BharathPateru。当您的需求需要
PROCEDURE时,您为什么还要关注FUNCTION。我们通常在需要一些计算或希望返回一些逻辑或布尔值的地方使用函数。您可以按照以下示例中显示的内容进行操作。
标签: sql oracle function stored-procedures plsql