免费注册 查看新帖 |

Chinaunix

广告
  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2778 | 回复: 0
打印 上一主题 下一主题

begin块内部是否可以定义游标? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-11-15 14:46 |只看该作者 |倒序浏览
CREATE OR REPLACE FUNCTION get_localcost(msisdn VARCHAR2) RETURN NUMBER
IS
  v_Intercost NUMBER;
  v_chargetime VARCHAR2(24);
  t_chargetime VARCHAR2(24);
  sumIntercost NUMBER;
  tempcount NUMBER;
  No_result EXCEPTION;
  BQ_201111_MSISDN VARCHAR2(800);
  bq_sql VARCHAR2(800);
  BQ_TAB_MSISDN VARCHAR2(24);
  result_sql VARCHAR2(800);
  localcost NUMBER;

BEGIN
  BQ_TAB_MSISDN:=BQ_TAB_||substr(msisdn,length(msisdn)-2,3);
  bq_sql:='declare bq_cusor cursor for select S_16_STTIM,I_COST From '||BQ_TAB_MSISDN||' Where S_24_MSISDN='||msisdn||' And S_4_2=3 Order By S_16_STTIM asc;';
  open bq_cusor
  loop
    fetch bq_cusor into BQ_201111_MSISDN
    exit when bq_cusor%notfound;
    v_chargetime:=bq_cusor.S_16_STTIM;
    v_Intercost:=bq_cusor.I_COST;
    if (sumIntercost>=100000 or tempcount>50) then
                t_chargetime:=v_chargetime
                exit;
    end if;  
    sumIntercost:=sumIntercost+v_Intercost;
  end loop;
  close bq_cusor;
EXCEPTION
  WHEN no_result THEN
    DBMS_OUTPUT.PUT_LINE('caculate wrong');
    result_sql:='Select sum(I_COST) From '||BQ_TAB_MSISDN||' Where S_24_MSISDN='||msisdn||' And S_4_2!=3 And S_16_STTIM>'||t_chargetime||';'
    execute immediate into localcost;
    RETURN localcost;
END;

帮忙看下毛病在哪里?是不是begin块不能定义游标,还是有另外的方式可以在begin块定义游标?
定义游标后,应该怎么执行这个游标,让游标生效?
谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP