关于function和proc返回结果集的问题

viqn7qdnt 2012-04-27 04:39:06

--本人是初学者,从t-sql转pl-sql的,转来后也只是一直用工具,只需要增删该查,现在遇到一些function和proc的问题,问下大家
--谁可以给个传参,如表名,字段名,条件,三个参数,然后返回结果集的function和proc各一个吗?
--我只能写出不传参,直接调用sql语句返回结果集的,传参后就不知道怎么实现这动态sql的结果集的返回了
create table emp
(empno number(4) constraint EMP_pk primary key,
ename varchar2(9),
job varchar2(9),
mgr number(4),
sal number(7,2),
comm number(7,2)
);


insert into emp(empno,ename,job,mgr,sal,COMM) values(7369,'smith','clerk',7902,800,20);

insert into emp(empno,ename,job,mgr,sal,COMM) values(7499,'allen','salseman',7698,1600,300);

insert into emp(empno,ename,job,mgr,sal,COMM) values(7521,'WARD','salseman',7698,1250,500);

insert into emp(empno,ename,job,mgr,sal,COMM) values(7566,'JONES','MANAGER',7839,2975,20);

insert into emp(empno,ename,job,mgr,sal,COMM) values(7645,'MARTIN','SALESMAN',7698,1250,1400);

insert into emp(empno,ename,job,mgr,sal,COMM) values(7698,'BLACK','MANAGER',7839,2850,20);

insert into emp(empno,ename,job,mgr,sal,COMM) values(7844,'URNER','SALESMAN',7698,1500,0);

--以这样的表为例,表emp,字段job,条件comm=20;这样传入三个参数返回出结果集的function和proc分部该怎么写?
...全文
90 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
iqlife 2012-04-27
  • 打赏
  • 举报
回复
返回结果集的话,用函数的话只能用管道不好处理和控制

一般的话用存储过程,用游标比较好处理
ssqtjffcu 2012-04-27
  • 打赏
  • 举报
回复
一楼的可以,用动因态语句打开游标,用过程的输出游标参数,返回结果集,然后java处理这结果集
  • 打赏
  • 举报
回复
只写了存储过程,用jdbc调用的时候,注册返回类型为CURSOR,然后用ResultSet接收。

create or replace procedure proc_getresult (p_table in varchar,p_column in varchar,p_condition varchar,result out sys_refcursor)
as
v_sql varchar(2000) := '';
begin
v_sql := v_sql || ' select ' || p_column;
v_sql := v_sql || ' from ' || p_table;
v_sql := v_sql || ' where ' || p_condition;

open result for v_sql;
end proc_getresult;

3,491

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧