是否有一个oracle查询,我可以用它来获取返回表的oracle函数的详细信息,我在那里查找该表的信息,比如记录名称,但主要是列中的该记录及其类型。
示例功能:
create or replace
function return_table return t_nested_table AS
v_ret t_nested_table;
begin
v_ret := t_nested_table();
v_ret.extend;
v_ret(v_ret.count) := t_col(1, 'one');
v_ret.extend;
v_ret(v_ret.count) := t_col(2, 'two');
v_ret.extend;
v_ret(v_ret.count) := t_col(3, 'three');
return v_ret;
end return_table;
使用类型
create or replace
type t_col as object (
i number,
n varchar2(30)
);
create or replace
type t_nested_table as table of t_col;
只知道所有者(系统)和对象名称(return_table),我想执行一个查询,它将返回t_col的信息。 列的名称(i,n)和类型(数字,varchar2)
我不能单独执行查询,因为可能存在这样一种情况,即在我尝试仅获取该功能时,该功能需要输入。栏目信息
我将在C#.Net
中执行此查询答案 0 :(得分:1)
对于当前登录,请使用
SELECT uta.attr_name, uta.attr_type_name || CASE WHEN uta.length IS NOT NULL THEN '('||uta.length||')' ELSE NULL END
FROM user_coll_types uct
JOIN user_type_attrs uta
ON uta.type_name = uct.elem_type_name
WHERE uct.type_name = 'COLLECTION_NAME'
ORDER BY uta.attr_no;
对于有权访问其他用户类型的登录用户:
SELECT ata.attr_name, ata.attr_type_name || CASE WHEN ata.length IS NOT NULL THEN '('||ata.length||')' ELSE NULL END
FROM all_coll_types act
JOIN all_type_attrs ata
ON ata.type_name = act.elem_type_name AND ata.OWNER = act.OWNER
WHERE act.type_name = 'COLLECTION_NAME'
AND act.OWNER = 'OWNER_NAME'
ORDER BY ata.attr_no;
对于整个数据库中存在的类型(需要具有特殊权限):
SELECT dta.attr_name, dta.attr_type_name || CASE WHEN dta.length IS NOT NULL THEN '('||dta.length||')' ELSE NULL END
FROM dba_coll_types dct
JOIN dba_type_attrs dta
ON dta.type_name = dct.elem_type_name AND dta.OWNER = dct.OWNER
WHERE dct.type_name = 'COLLECTION_NAME'
AND dct.OWNER = 'OWNER_NAME'
ORDER BY dta.attr_no;