将数据插入表中的列

Posted

技术标签:

【中文标题】将数据插入表中的列【英文标题】: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)

【问题讨论】:

【参考方案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'); 之后 编写您的插入语句。

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

【讨论】:

以上是关于将数据插入表中的列的主要内容,如果未能解决你的问题,请参考以下文章

如何使用pyspark将json对象插入postgres表中的列

Oracle SQL:根据在另一个表中给定条件的列中找到的值插入

将一个表的列中的数据与另一个表中的同一列进行比较

如何将数据库中的列值获取到jLabel

您可以从一个表中的列中调用数据以在 SQL 和 Laravel 中的另一个表中使用吗?

将数据从一列插入另一个表的两列的过程