当表是我在 Oracle 中的类型时如何显示结果
Posted
技术标签:
【中文标题】当表是我在 Oracle 中的类型时如何显示结果【英文标题】:How to show result when table is my type in Oracle 【发布时间】:2009-08-27 15:32:26 【问题描述】:我创建了一个简单的 Oracle 类型:
create or replace TYPE MY_TYPE AS OBJECT (ID NUMBER(30), NAME VARCHAR2(20));
然后,我创建了第二种表类型:
create or replace TYPE MY_TYPE_TABLE AS TABLE OF MY_TYPE;
最后,我创建了一个简单的函数:
create or replace FUNCTION my_function(line_id IN NUMBER) RETURN MY_TYPE_TABLE
AS
return_data MY_TYPE_TABLE := MY_TYPE_TABLE();
BEGIN
return_data.EXTEND;
return_data(return_data.count) := (MY_TYPE(10, 'BOB')) ;
return_data.EXTEND;
return_data(return_data.count) := (MY_TYPE(11, 'ALAN')) ;
RETURN return_data;
END SETTLEMENT_NET_TRACKING;
我的问题:如何运行这个函数,结果如下:
10 BOB
11 ALAN
这样做很热门吗?
【问题讨论】:
【参考方案1】:如果您正在寻找该方法的日志记录,您可以使用 DBMS_OUTPUT 记录到标准输出或使用 UTL_FILE 记录到文件。我在之前的问题中建议,如果您要设计比普通应用程序更大的东西,您需要创建一个自定义日志记录包。
对于您的问题,它看起来像这样:
dbms_output.enable;
for i in return_data.first..return_data.last loop
dbms_output.put_line(return_data(i).id || ' ' || return_data(i).name);
end loop;
您需要在客户端应用程序中启用输出。对于 SQLPlus,您可以在调用 API 之前使用 SET SERVEROUT ON。
【讨论】:
【参考方案2】:你也可以这样做
select * from table(my_function(30))
【讨论】:
以上是关于当表是我在 Oracle 中的类型时如何显示结果的主要内容,如果未能解决你的问题,请参考以下文章
oracle当表A1,数据发生update时,将字段time更新为当前时间
ORACLE 数据库中在将date类型转换成varchar类型时出现问题。SQL如下:
ORA-03206,当表空间不够时,如何以添加数据文件的方式扩展表空间