当表是我在 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如何查询嵌套表的分项

ORACLE 数据库中在将date类型转换成varchar类型时出现问题。SQL如下:

ORA-03206,当表空间不够时,如何以添加数据文件的方式扩展表空间

Oracle查询结果中的日期格式显示到毫秒数,如何去掉多余的数

Oracle中的双表是啥?