从嵌套表中删除特定元素

时间:2017-03-22 06:12:53

标签: oracle plsql

我创建了一种嵌套表,如下所示:

CREATE OR REPLACE TYPE STRING_ARRAY AS TABLE OF VARCHAR2(1000);

我希望有一些方法可以从数组中删除特定元素。 E.g。

AVC_NAMES := STRING_ARRAY('ALEX', 'BETTY', 'CARL', 'DONALD');
SP_EXCLUDE(AVC_NAMES, 'BETTY'); // this will remove BETTY from the array.

嵌套表中是否有可以从数组中删除特定元素的内置方法?或者我应该写一个s.p.做这个工作?

2 个答案:

答案 0 :(得分:2)

尝试使用Multiset运算符。多节点运算符将两个嵌套表的结果组合到一个嵌套表中。

result := collection1 MULTISET EXCEPT collection2

declare 
 type mycollection is table of varchar2(10);
  c1 mycollection := mycollection('A','B','C','D','E');
  to_remove mycollection := mycollection('C');
begin 
  c1 := c1 multiset EXCEPT  to_remove; 
for i                  in c1.first..c1.last
  loop
    dbms_output.put_line(c1(i));
  end loop;      
end;

答案 1 :(得分:0)

希望下面的snipet有所帮助。

return function(data, search) {
if(angular.isDefined(search)) {
  var results = [];
  var i;

  var searchVal = $filter('lowercase')(search);
  for(i = 0; i < data.length; i++){
    var name = $filter('lowercase')(data[i].name);
    var description = $filter('lowercase')(data[i].description);
    if(name !== null &&  description !== null){
     if(name.indexOf(searchVal) > -1 || description.indexOf(searchVal) > -1){
      results.push(data[i]);
     }
    }
  }
  return results;
} else {
  return data;
}
};