【问题标题】:Insert data into a column in my table将数据插入表中的列
【发布时间】:2011-09-16 19:30:30
【问题描述】:

我创建了一个 for 循环,它循环直到达到 10 并在每次达到 6 或 8 时输出 INSERT 现在我想在每次达到 6 或 8 时在结果列中插入一个空值。我该怎么做?

declare var1 number := 0;
begin
loop exit when var1 > 10; 
if var1 IN (6,8) THEN dbms_output.put_line(' INSERT'); ELSE
dbms_output.put_line(var1);
end if;
var1 := var1 + 1;
end loop;
dbms_output.put_line('Done');
end;
/

表格

 SQL> describe messages
 Name                                      Null?    Type
  ----------------------------------------- -------- ----------------------------

 RESULTS                                            VARCHAR2(60)

【问题讨论】:

    标签: sql oracle plsql sqlplus


    【解决方案1】:
    SQL> describe messages
     Name                                     Null?    Type
     ---------------------------------------- -------- ----------------------------
     RESULTS                                           VARCHAR2(60)
    
    SQL> SELECT COUNT(*) FROM messages;
    
      COUNT(*)
    ----------
             0
    
    SQL> SELECT * FROM messages;
    
    no rows selected
    
    SQL> get a.sql
      1  DECLARE
      2    var1 NUMBER := 0;
      3  BEGIN
      4    LOOP
      5      EXIT WHEN var1 > 10;
      6      IF var1 IN (6,8) THEN
      7        DBMS_OUTPUT.PUT_LINE(' INSERT');
      8        INSERT INTO messages VALUES (NULL);
      9      ELSE
     10        DBMS_OUTPUT.PUT_LINE(var1);
     11      END IF;
     12      var1 := var1 + 1;
     13    END LOOP;
     14    DBMS_OUTPUT.PUT_LINE('Done.');
     15* END;
     16  
     17  /
    0
    1
    2
    3
    4
    5
    INSERT
    7
    INSERT
    9
    10
    Done.
    
    PL/SQL procedure successfully completed.
    
    SQL> SELECT COUNT(*) FROM messages;
    
      COUNT(*)
    ----------
             2
    
    SQL> SELECT * FROM messages;
    
    RESULTS
    ------------------------------------------------------------
    
    
    
    SQL> 
    

    【讨论】:

    • 这依赖于 SQL*Plus 中的自动提交。在插入之后或循环结束之后确实应该有一个commit
    【解决方案2】:

    dbms_output.put_line(' INSERT'); 之后 编写您的插入语句。

    然后决定是要自动提交,还是最后手动提交。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-20
      • 1970-01-01
      • 1970-01-01
      • 2017-10-23
      • 2013-01-08
      • 1970-01-01
      相关资源
      最近更新 更多