簡體   English   中英

PL SQL 存儲過程復制同一張表中的行與修改的數據

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM