我正在尝试编写一个返回select查询结果的函数 . 我使用过非常基本的函数来返回一个数字和一个varchar2(字符串) . 但是现在我想返回一个select的结果,就像10行及其相应的列一样 .
我将如何编写函数以及返回类型是什么?
我写的一个示例函数是:
创建或替换函数func1将varchar2作为begin return返回('hello from func1');结束func1;
我仍处于基本级别,所以有人可以帮我退出选择查询的结果吗?我相信会使用游标,因为会有不止一行 .
3 回答
好吧,如果你刚刚学习,你应该知道流水线功能 . 流水线函数允许您在PLSQL中返回动态生成的表 .
例如...
我从http://www.akadia.com/services/ora_pipe_functions.html借来的:-)
如果没有你如何调用这个函数的上下文,我对你如何帮助你有点迷茫 .
您确定使用子选择,加入或查看会不会更好吗?
通常,函数返回单个“事物” . 通常,这是一个标量(数字,varchar2,记录等),但您可以返回一个集合 . 因此,例如,您可以返回一个集合(在本例中为嵌套表),其中包含EMP表中的所有EMPNO值
但这在函数中并不常见 . 让函数返回游标而不是返回值并让调用者处理获取数据更为常见,即
但即便如此,在Oracle中并不常见 . 根据您要完成的任务,通常更常见的是创建一个视图来选择您感兴趣的数据并查询该视图而不是调用函数或过程 .