我并不熟悉PL / SQL等等。
我正在创建一个“表格从......中选择”。之后我得到了另一个将数据插入同一个表的语句。我想确定添加的数据。 与来自第一个带有id:“A”的语句的数据和来自带有id:“B”的第二个语句的数据一样。
我该怎么做?我已经添加了一个名为RUN_IDENTIFIER的新列,接下来是什么?
我可以在PL / SQL中作为过程在Visual Studio 2008中作为SSIS包吗?
谢谢, pronax
答案 0 :(得分:0)
希望我能回答你的问题。我回答之前回顾一下。您使用以下语句创建并填充了表RUN
:
create table RUN as (select * from ABC minus select * from DEF);
insert into RUN (select * from DEF minus select * from ABC);
然后您已向表RUN_IDENTIFIER
添加了一列RUN
。现在,您希望使用标识符填充列RUN_IDENTIFIER
。序号如何? Oracle的序列号很好。在Oracle中,序列总是为您提供另一个序列号。
CREATE SEQUENCE RUN_ID_SEQUENCE;
然后你更新表
UPDATE RUN SET RUN_IDENTIFIER=RUN_ID_SEQUENCE.NEXTVAL;
这是一个小小的演示。我用一个简单的insert语句创建表:
create table mytable (text varchar2(20));
insert into mytable values ('abc');
insert into mytable values ('xyz');
select * from mytable;
alter table mytable add run_identifier number;
create sequence mysequence;
update mytable set run_identifier=mysequence.nextval;
select * from mytable;
drop table mytable;
drop sequence mysequence;
输出:
Table created.
1 row created.
1 row created.
TEXT
--------------------
abc
xyz
2 rows selected.
Table altered.
Sequence created.
2 rows updated.
TEXT RUN_IDENTIFIER
-------------------- --------------
abc 1
xyz 2
2 rows selected.
Table dropped.
Sequence dropped.
答案 1 :(得分:0)
感谢您的回答。我想到了一个序列,但我决定用一个子选择来解决我的问题。
喜欢:
CREATE TABLE AS(
select 1 as RUN_IDENTIFIER, run1.* from(
select * from abc MINUS select * from def)run1
UNION ALL
select 2 as RUN_IDENTIFER, run2.* from(
select * from def MINUS select * from abc)run2);
感谢您的帮助。