函数两个参数
第一个是表名,第二个是列名,第三个是条件收到这两个参数后函数就去指定的表里面按条件查询指定点的列。
查到后将结果组成一个字符串返回, 每个值之间用逗号隔开。比如query('manager','username','valid=1')
就去manager表里面查所有valid值为1的username,将所有的username的值组合起来用逗号隔开
然后将值返回。。
第一个是表名,第二个是列名,第三个是条件收到这两个参数后函数就去指定的表里面按条件查询指定点的列。
查到后将结果组成一个字符串返回, 每个值之间用逗号隔开。比如query('manager','username','valid=1')
就去manager表里面查所有valid值为1的username,将所有的username的值组合起来用逗号隔开
然后将值返回。。
oc_result out sys_refcursor,
iv_tabname varchar2,
iv_cloumname varchar2,
iv_query varchar2
)
as
v_sqlstring varchar2(1000);
begin
v_sqlstring := 'select ' || iv_cloumname || ' from '|| ' ' || iv_tabname || ' where ' || iv_query;
open oc_result for v_sqlstring;
end;
/var ocursor refcursorcall p_test(:ocursor, 'tabs', 'table_name', 'tablespace_name = ''USERS''');
set linesize 1024
set pagesize 0print ocursor简单写了下,你最好加上判断表,列是否存在,否则会报错的
create or replace function f_test(
iv_tabname varchar2,
iv_cloumname varchar2,
iv_query varchar2
)
return varchar2
as
v_sqlstring varchar2(1000);
l_str_name varchar2(4000)
begin
v_sqlstring := 'select wm_concat('|| iv_cloumname || ') from '|| ' ' || iv_tabname || ' where ' || iv_query;
execute immediate v_sqlstring into l_str_name
return l_str_name;exception
when others then
return null;
end;
/
Warning: Function created with compilation errors.
有错啊?