将数据插入表中的列
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:根据在另一个表中给定条件的列中找到的值插入