得到动态sql信息

create or replace function fun_test(psname in varchar2,org_group_id in varchar2,model_id in varchar2,col_id in varchar2) return varchar2
is
  v_cursor   number;  
  Result varchar2(255);
  lsWhere varchar2(1000); 
  lsValue varchar2(1000);
  lsSQL varchar2(1000);
  iLen number(2);
  v_process Integer;
  TYPE value_array IS TABLE OF Varchar2(100) INDEX BY BINARY_INTEGER;
  lsColValue value_array;
begin
   lsWhere := '';
   select query_where, query_value into lsWhere,lsValue from test where row_id=col_id;
   if  then
  
   end if;
   iLen := length(lsValue) - length(replace(lsValue,',',''));
   lsSQL := 'select '|| lsValue ||' from test1 where a='''||psname||''' and b='||org_group_id||' and rownum < 2';
    for i in 0..iLen Loop
        lsColValue(i) := '';
    end loop;
   v_cursor:=DBMS_SQL.OPEN_CURSOR;
   DBMS_SQL.PARSE(v_cursor,lsSQL,dbms_sql.v7);
   for i in 0..iLen loop
       DBMS_SQL.define_column_char(v_cursor,i+1,lsColValue(i),100);  
   end loop;
    v_process:=DBMS_SQL.execute(v_cursor);  
    loop  
        if DBMS_SQL.FETCH_ROWS(v_cursor)=0   then  
            exit;  
        end   if;
        for i in 0..iLen Loop
            --lsColValue(i-1)
            DBMS_SQL.COLUMN_VALUE_CHAR(v_cursor,i+1,lsColValue(i));
            lsWhere := replace(lsWhere,'$'||(i+1)||'$',''''||trim(lsColValue(i))||'''');
        end loop;
    end   loop;  
    DBMS_SQL.CLOSE_CURSOR(v_cursor);
    return lsWhere;
end fun_getAdvanceConditin; 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值