首页 > 解决方案 > 创建返回特定输入上方行的 sql 函数

问题描述

我想创建一个 sql 函数,该函数将返回任何具有大于或等于用户输入数字的特定 coulmn 值的行。我正在使用 PL/SQL 开发人员,oracle sql。

例如这是表:

MyTable

id  name
5   Zack
4   David
3   Mike

因此,如果用户的输入为 4,他将收到此表:

id  name
5   Zack
4   David

标签: oracleplsql

解决方案


也许你需要表函数。例如:

create table MyTable(id, name) as (
    select 5,   'Zack' from dual union
    select 4,   'David' from dual union
    select 3,   'Mike' from dual
);
/
CREATE TYPE t_record AS OBJECT (
  num           NUMBER,
  string        VARCHAR2(50)
);
/
CREATE TYPE t_table IS TABLE OF t_record;
/
CREATE OR REPLACE FUNCTION get_table (pN IN NUMBER) RETURN t_table AS
  vReturn  t_table;
BEGIN
  SELECT t_record(id, name)
  bulk collect into vReturn
  from myTable
  where id <= pN;

  RETURN vReturn;
END;
/

select *
from table(get_table(4))

给出:

       NUM STRING                                            
---------- --------------------------------------------------
         3 Mike                                              
         4 David                                             

推荐阅读