代码之家  ›  专栏  ›  技术社区  ›  Michał Ziober

当表是我在Oracle中的类型时如何显示结果

  •  1
  • Michał Ziober  · 技术社区  · 15 年前

    我创建了一个简单的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
    

    热做吗?

    2 回复  |  直到 15 年前
        1
  •  2
  •   darreljnz    15 年前

    如果您要登录该方法,可以使用dbms_output登录到标准输出,或者使用utl_文件登录到文件。在前面的问题中,我曾建议,如果您设计的应用程序比普通应用程序更大,那么您将需要创建一个自定义日志记录包。

    对于您的问题,它看起来像这样:

    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。

        2
  •  1
  •   Gary Myers    15 年前

    你也可以这样做

    select * from table(my_function(30))