当表是我在 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 中的类型时如何显示结果的主要内容,如果未能解决你的问题,请参考以下文章