这是我正在尝试做的事情:
1)从原始表中插入一些值的临时表
INSERT INTO temp_table SELECT id FROM original WHERE status='t'
Run Code Online (Sandbox Code Playgroud)
2)更新原始表
UPDATE original SET valid='t' WHERE status='t'
Run Code Online (Sandbox Code Playgroud)
3)根据两个表之间的连接进行选择
SELECT * FROM original WHERE temp_table.id = original.id
Run Code Online (Sandbox Code Playgroud)
有没有办法结合步骤1和2?
您可以通过在PL/SQL中执行更新并使用RETURNING子句将更新的ID导入PL/SQL表来组合这些步骤.
编辑:
如果仍然需要进行最终查询,仍然可以使用此方法插入temp_table; 虽然取决于最后一个查询的用途,但可能还有其他方法可以实现您的目标.为了显示:
DECLARE
id_table_t IS TABLE OF original.id%TYPE INDEX BY PLS_INTEGER;
id_table id_table_t;
BEGIN
UPDATE original SET valid='t' WHERE status='t'
RETURNING id INTO id_table;
FORALL i IN 1..id_table.COUNT
INSERT INTO temp_table
VALUES (id_table(i));
END;
/
SELECT * FROM original WHERE temp_table.id = original.id;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15491 次 |
| 最近记录: |