【问题标题】:Create type table of variable How do I set the field name?创建变量类型表如何设置字段名称?
【发布时间】:2021-11-27 10:48:30
【问题描述】:

create or replace type TableOfNumber as table of number;

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

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 更改为哪个 ITid 并将查询子句从更改为

select column_value from GetItems()

select ITid from GetItems()

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

【问题讨论】:

    标签: oracle plsql types


    【解决方案1】:

    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。你为什么用它?你的代码里没有dynamic):

    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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多