我可以将嵌套表和普通表相交吗

时间:2018-11-07 10:38:50

标签: sql plsql oracle12c

我从选定的表格数据中创建了nested table

如何将嵌套表数据与普通(多个)表数据进行比较?嵌套表中的一个元素与普通表中的几个元素匹配。

嵌套表的代码:

DECLARE
    TYPE spec_params_tbl IS TABLE OF NUMBER;
    mstbl_spec_id   spec_params_tbl;
BEGIN
    SELECT spec_id
    BULK COLLECT
    INTO mstbl_spec_id
    FROM
        (SELECT spec_id
            FROM spec_params
            WHERE name_id = 19 AND value LIKE 'MS'
            INTERSECT
            SELECT spec_id
            FROM spec_params
            WHERE  name_id = 36 AND value LIKE 'MSI%');

    BEGIN
        FOR i IN mstbl_spec_id.first..mstbl_spec_id.last LOOP
            dbms_output.put_line(mstbl_spec_id(i));
        END LOOP;
        dbms_output.put_line('--- END NESTED TABLE---');
    END;
END;
/

因此,在for循环中,我可以以某种方式放置查询吗?那给我每个mstbl_spec_id(i)元素多次匹配吗? (SELECT在没有INTO的情况下无法工作,只给出了一行)

结果如下:

| nested_id | table1_column_1 | table1_column_2 | table2_column_2 |
------------+-----------------+-----------------+------------------
|     1     |      3344       |      3333       |       4422      |
|     2     |      3344       |      4444       |       2244      |
|     3     |      5533       |      5555       |       3232      |

0 个答案:

没有答案