如何解决PL SQL 存储过程复制同一个表中修改数据的行
我是 PL-SQL 方言的新手。在工作中,我使用的是旧的 Oracle 10g DBMS,我需要从这里称为“myWorkTable”的表中选择一些行,修改每个选定行的一些字段,最后在同一个表中插入新行。 过去我用 T-SQL 做过类似的事情,但 PL-SQL 不允许在块或过程中使用 DDL(如 CREATE 和 DROP),因此它不起作用。为了让您了解我想要完成的工作,以下是我在 PL SQL 中不起作用的代码:
DECLARE
old VARCHAR2( 31 ) := 'oldString';
new VARCHAR2( 31 ) := 'newString';
BEGIN
CREATE TABLE myDB.tmp1 AS SELECT * FROM myDB.myWorkTable where myField = old;
UPDATE myDB.tmp1 SET myField = new;
INSERT INTO myDB.myWorkTable SELECT * FROM myDB.tmp1;
DROP TABLE myDB.tmp1;
END;
有没有办法在 PL-SQL 块或存储过程中不使用 DDL 来实现相同的结果?感谢您的提示和技巧!
解决方法
您可以只列出所有列:
INSERT INTO myDB.myWorkTable
SELECT col1,col2,col3,'new' as myField,. . ..
FROM myDB.tmp1;
这样您就不必摆弄临时表了。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。