[英]PL SQL stored procedure to copy rows in the same table with modified data
我是 PL-SQL 方言的新手。 在工作中,我使用的是舊的 Oracle 10g DBMS,我需要 select 此處名為“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;
然后你不必擺弄臨時表。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.