函数两个参数
第一个是表名,第二个是列名,第三个是条件收到这两个参数后函数就去指定的表里面按条件查询指定点的列。
查到后将结果组成一个字符串返回, 每个值之间用逗号隔开。比如query('manager','username','valid=1')
就去manager表里面查所有valid值为1的username,将所有的username的值组合起来用逗号隔开
然后将值返回。。

解决方案 »

  1.   

    我不会写啊, 没学过ORACLE。
      

  2.   

    create or replace procedure p_test(
        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简单写了下,你最好加上判断表,列是否存在,否则会报错的
      

  3.   

    借用4楼的写个。
    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;
    /
      

  4.   

    嘿嘿,我也刚学orcale 不过这个好像能写出来,但是得看笔记,否则怕是有错误。
      

  5.   


    Warning: Function created with compilation errors.
    有错啊?