pl / SQL从另一个表中的值生成一个表中的值的过程

时间:2019-03-27 16:40:36

标签: oracle plsql

我正在学习PL / SQL,但真的不知道从哪里开始编写过程。

我有两个表,一个表的部门名称为,id范围为和id范围为。另一个表需要具有这些范围内的所有值。

-- table_a
CREATE TABLE table_a (
    D_ID number not null primary key,
    DEPT VARCHAR(10),
    ID_FROM VARCHAR(7),
    ID_TO VARCHAR(7),
    IS_POP varchar(1) check(IS_POP IN ('Y', 'N'))
    );

--values in table a
INSERT INTO table_a values (1, 'abc', 'A10', 'A100', 'Y');
INSERT INTO table_a values (2, 'def', 'B10', 'B50', 'N');
INSERT INTO table_a values (3, 'ghi', 'C01', 'C25', 'N');

--table_b
CREATE TABLE table_b (
    D_id number,
    ID_NUM VARCHAR(7) primary key,
    STATUS VARCHAR(8) CHECK (status IN ('Free','Taken')),
    CONSTRAINT fk_interval FOREIGN KEY (D_id) REFERENCES table_a (D_ID)
    );

我正在尝试编写一个过程,用从table_a生成的值填充table_b,其中IS_POP字段为“ N”,并在生成值时将其更改为“ Y”。 因此,table_b的条目应包含66行,例如

D_id ID_NUM STATUS
2     B10   Free
2     B11   Free
2     B12   Free
2     B13   Free
...
3     C24   Free
3     C25   Free

1 个答案:

答案 0 :(得分:0)

下面是一个示例过程,该过程在此示例数据中生成66条记录,尽管我不确定在TABLE_B中是否需要零填充。

这也使用迭代DML,因此如果大规模使用可能会导致性能下降,并且不适用于处理TABLE_A在已经填充到{{1 }}。这些情况可以根据您的情况进行增强。

TABLE_B