将集合操作结果赋给嵌套表
可以将SQL的MULTISET操作或SET函数调用的结果赋值给嵌套表。
MULTISET操作符将2个嵌套表合并成一个嵌套表。2个嵌套表的元素必须具有可比较的数据类型;SET函数接收一个嵌套表参数,返回一个相同数据类型的嵌套表,它的元素都是不同的。(即排队了重复的元素)
DECLARE TYPE nested_typ IS TABLE OF NUMBER; --定义嵌套表类型 nt1 nested_typ := nested_typ(1,2,3); nt2 nested_typ := nested_typ(3,2,1); nt3 nested_typ := nested_typ(2,3,1,3); nt4 nested_typ := nested_typ(1,2,4); answer nested_typ; PROCEDURE print_nested_table (nt nested_typ) IS output VARCHAR2(128); BEGIN IF nt IS NULL THEN DBMS_OUTPUT.PUT_LINE('结果: null 集合'); ELSIF nt.COUNT = 0 THEN DBMS_OUTPUT.PUT_LINE('结果: empty 集合'); ELSE FOR i IN nt.FIRST .. nt.LAST LOOP output := output || nt(i) || ' '; END LOOP; DBMS_OUTPUT.PUT_LINE('结果: ' || output); END IF; END print_nested_table; BEGIN answer := nt1 MULTISET UNION nt4; print_nested_table(answer); answer := nt1 MULTISET UNION nt3; print_nested_table(answer); answer := nt1 MULTISET UNION DISTINCT nt3; print_nested_table(answer); answer := nt2 MULTISET INTERSECT nt3; print_nested_table(answer); answer := nt2 MULTISET INTERSECT DISTINCT nt3; print_nested_table(answer); answer := SET(nt3); print_nested_table(answer); answer := nt3 MULTISET EXCEPT nt2; print_nested_table(answer); answer := nt3 MULTISET EXCEPT DISTINCT nt2; print_nested_table(answer); END;
|
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/17013648/viewspace-1107991/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/17013648/viewspace-1107991/