首页 > 解决方案 > 带有数字婴儿车的 oracle 修剪功能

问题描述

将类型声明为数字表(38,0)。在函数的过程中。

代码示例:

ids_list := Type(....); // load data to variable
ids_list.trim(count);

我不太明白如何用带有数字参数的数字列表来修剪列表。ids_list.trim(count) 会发生什么?

标签: sqloracle

解决方案


如果我理解正确,那么您说的是集合及其trim方法。如果是这样,那么文档说:

减小集合的大小(TRIM 方法)

这个过程有两种形式:

  • TRIM 从集合的末尾删除一个元素。

  • TRIM(n) 从集合的末尾删除 n 个元素。

如果要删除所有元素,请使用不带参数的 DELETE。


您发布的代码没有做任何事情,因为

SQL> declare
  2     type numlist is table of number;
  3     n    numlist := numlist(1,2,3, 10);
  4  begin
  5    n.trim(count);
  6  end;
  7  /
  n.trim(count);
         *
ERROR at line 5:
ORA-06550: line 5, column 10:
PLS-00204: function or pseudo-column 'COUNT' may be used inside a SQL statement only
ORA-06550: line 5, column 3:
PL/SQL: Statement ignored


SQL>

也许您打算改用该count方法 ( n.count)?

SQL> declare
  2     type numlist is table of number;
  3     n    numlist := numlist(1,2,3, 10);
  4  begin
  5    dbms_output.put_line('Number of elements in that collection = ' || n.count);
  6
  7    n.trim(n.count);
  8
  9   dbms_output.put_line('Number of elements in that collection AFTER trim = ' || n.count);
 10  end;
 11  /
Number of elements in that collection = 4
Number of elements in that collection AFTER trim = 0

PL/SQL procedure successfully completed.

SQL>

如果是这样,那么 - 如您所见 - 它会从集合中删除所有元素。


推荐阅读