oracle - 创建返回特定输入上方行的 sql 函数
问题描述
我想创建一个 sql 函数,该函数将返回任何具有大于或等于用户输入数字的特定 coulmn 值的行。我正在使用 PL/SQL 开发人员,oracle sql。
例如这是表:
MyTable
id name
5 Zack
4 David
3 Mike
因此,如果用户的输入为 4,他将收到此表:
id name
5 Zack
4 David
解决方案
也许你需要表函数。例如:
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
推荐阅读
- cmake - 使用 mingw-w64 编译 cpputest
- php - 是否可以回显在更新数据库时更新的列?
- laravel - 如何执行作业:在 phpunit 期间调度
- sapui5 - 从后端到客户端的 ABAP AMC 通道不起作用
- c# - C#,UWP 应用程序:无法将数据从 API 绑定到列表视图
- git - 服务器端预提交挂钩在 GitLab 社区版中是否有效?
- angular - Angular 8:如何避免父子逻辑重复
- android - (取消)在 Android 服务中注册传感器侦听器并不总是有效
- r - 将 geom_vline 扩展到绘图之外
- ansible - 循环遍历 Ansible playbook 上的 var 文件,然后依次运行 playbook 中的所有角色