Create type table of variable 如何设置字段名?

Create type table of variable How do I set the field name?

create or replace type TableOfNumber as table of number;

我创建了一个 table 的数字用作函数的输出

create or replace function GetItems()
return TableOfNumber as
Res TableOfNumber;
  sqlstr varchar2(500);
begin
  -- Test statements here
    sqlstr:=  'select swid from ITEMS i' ;
     dbms_output.put_line (sqlstr);
  EXECUTE IMMEDIATE sqlstr
  BULK COLLECT INTO Res ;
 return(Res);
end ;

我想在创建类型时将字段名称从 column_value hg 更改为 which ITid 并将查询子句从

select column_value from GetItems()

select ITid from GetItems()

create or replace type TableOfNumber  as table of number ''' name ITid ''';

column_value 是一个伪列 - 据我所知 - 如果你正在做你正在做的事情,你就无法避免它。

但是,如果您切换到以下示例,那就是另一回事了。您需要两种类型:

SQL> create or replace type t_row as object (deptno number);
  2  /

Type created.

SQL> create or replace type t_tab as table of t_row;
  2  /

Type created.

函数(没有动态SQL。你为什么要使用它?你的代码中没有任何动态):

SQL> create or replace function getitems
  2    return t_tab
  3  as
  4    res t_tab;
  5  begin
  6    select t_row(deptno)
  7      bulk collect
  8      into res
  9      from dept;
 10    return res;
 11  end;
 12  /

Function created.

最后:列名是deptno,不是column_value

SQL> select * from table(getitems);

    DEPTNO
----------
        10
        20
        30
        40

SQL>