pl/sql中写function是否可以将表名作为参数传入进行动态查询?

数据库:oracle工具:PL/SQL期望实现的功能:createorreplacefunctionCalSpecRate(参数1,参数2,参数3)returnnumbe... 数据库:oracle
工具:PL/SQL
期望实现的功能:
create or replace function CalSpecRate(参数1,参数2,参数3)
return number is
Result number;
---参数1是某个表的表名,参数2和参数3是用于取数的条件和做相关处理的标识。传入表名和条件动态查询,对查询结果做复杂处理后赋给result。

简单的说就是想实现这个语句:select rate from 参数1 where job=参数2;

在function中能实现吗?能否给个语法和示例。

万分感谢!!
展开
 我来答
yangquanxin
2008-04-14 · 超过12用户采纳过TA的回答
知道答主
回答量:21
采纳率:0%
帮助的人:0
展开全部
如果是返回单行,比较简单,可以参考下面这种写法:
……
v_sql varchar2(1000);
v_rate varchar2(40); --具体类型,根据情况定
……
v_sql:='select rate from '||参数1||' where job='||参数2;
execute immediate v_sql into v_rate;

如果查询语句返回的是多行,需要定义游标,循环处理,参考如下:
……
v_sql varchar2(1000);
type curtype is ref cursor;
mycur curtype;
n number(12);--具体类型,根据情况定
……
v_sql:='select rate from '||参数1||' where job='||参数2;
open mycur for v_sql;
loop fetch mycur into n;
exit when mycur%notfound;
dbms_output.put_line(n);
end loop;
欢笑小法师
2019-06-16 · TA获得超过3810个赞
知道大有可为答主
回答量:3067
采纳率:31%
帮助的人:219万
展开全部
把表名传进去是可以
但是也只能在函数里查询那张表。。除非你的处理都在函数里咯
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式