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中能实现吗?能否给个语法和示例。
万分感谢!! 展开
工具: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中能实现吗?能否给个语法和示例。
万分感谢!! 展开
2个回答
展开全部
如果是返回单行,比较简单,可以参考下面这种写法:
……
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;
……
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;
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询