代码之家  ›  专栏  ›  技术社区  ›  Anar

Oracle SQL用户定义函数

  •  0
  • Anar  · 技术社区  · 2 年前

    我正在尝试编写Oracle SQL函数。应将国家代码、最小年份和最大年份作为输入,并应返回包含指定年份中该国家信息的表。这是我尝试编写的内容,但我对SQL函数还不熟悉。这就是数据的外观,我很高兴能得到任何帮助。 enter image description here

    create or replace type african_crisis_row as object(
    country_abv varchar(4),
    year number(5),
    banking_crisis varchar(10)
    );
    
    create or replace type t_african_crisis_table as table of african_crisis_row;
    
    create or replace function african_crisis (   
        country_abv in varchar,
        year_min in number,
        year_max in number
    )
    return t_african_crisis_table as v_ret table t_african_crisis_table;
    
    begin
        select 
           african_crisis_row(country_abv, year)
        bulk collect into
           v_ret
        from
           africancrisisdata
        where
            country_abv = country_abv and year between year_min and year_max;
        return v_ret
    end african_crisis
    
    1 回复  |  直到 2 年前
        1
  •  1
  •   MT0    2 年前

    您需要:

    • 去除 table v_ret 公告
    • 包括第三个 banking_crisis 调用中的值 african_crisis_row 对象构造函数。
    • 包括 ; 语句终止符位于 return 和最终版本 end 声明。

    (Oracle使用 VARCHAR2 VARCHAR 是的别名 瓦查尔2 .)

    类似这样:

    create or replace function african_crisis (   
      country_abv in varchar2,
      year_min    in number,
      year_max    in number
    ) return t_african_crisis_table
    as
      v_ret t_african_crisis_table;
    begin
      select african_crisis_row(country_abv, year, banking_crisis)
      bulk collect into v_ret
      from  africancrisisdata
      where country_abv = country_abv
      and   year between year_min and year_max;
    
      return v_ret;
    end african_crisis;
    /
    

    数据库(&L)&燃气轮机;不停摆弄 here