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 ''';
uj5u.com熱心網友回復:
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>
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/367856.html
上一篇:有沒有辦法縮短這個查詢?
