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>
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>