在occi编程的时候,声明了一个游标,然后开始取数,但是有时候,取的字段是空,这样的改怎么解决,
另外,我想找本occi编程方面的书看下,请推荐一本

解决方案 »

  1.   

    给 你个例子 ,用%found判断是否取到数据
    declare 
      v_yhbh varchar2(10); 
      v_yhmc varchar2(60); 
      i number:=1; 
      cursor bh_list is select distinct yhbh,yhmc from dbuser_manager order by yhmc ; 
    begin 
      open bh_list; 
      fetch bh_list into v_yhbh,v_yhmc; 
      while bh_list %found loop 
        add_list_element('BLK_LOGON.userid',i,v_yhmc,v_yhbh); 
        i:=i+1; 
        fetch bh_list into v_yhbh,v_yhmc; 
      end loop; 
      close bh_list; 
    end;
      

  2.   

    LZ可以参考LS的写法。不过,偶经常用这样的循环,现在都用隐形的游标。
    LOOP
        FETCH c_cust_demo
          INTO v_cust_demo;
        EXIT WHEN c_cust_demo%NOTFOUND;
    END LOOP
      

  3.   

    bool DCFilePro::SetConfigMap(int m_iCycleId)
    {
    try
    {
    const int null_value = -1 ;
    bool isNull = 0; this->specId = 0 ;
    sprintf(m_lpszSql,"SELECT upper(edp_tab),upper(edp_col),nvl(edp_col_ord_id,-1),nvl(upper(replace(EDW_TAB,'%%month%%',substr('%d',1,6))),'-1'),upper(edw_col),nvl(col_flag,-1),nvl(col_dim_flag,-1),dim_table,dim_s_col,dim_o_col,nvl(dim_col_default,'null'),nvl(cycle_flag,-1),nvl(crack_flag,-1),nvl(dif_flag,-1),nvl(pass_flag,-1),nvl(condition,'-1'),nvl(edw_tab_id,-1) "
       "FROM tb_jtsc_code_mapping_config WHERE upper(edp_tab)=upper('%s') ORDER BY edw_tab_id,nvl(edp_col_ord_id,-1)",m_iCycleId,this->m_table_dest);
    sprintf(m_lpszErr,"[目标表字段转换关系]::%s",m_lpszSql ) ;
    m_pLogger->Debug(m_lpszErr) ; lpConn->execQuery(m_lpszSql,cur,1 ) ;
    while(cur.fetch())
    {
    ConfigInfo _info;
    char firstKey[300]; memset(&_info,0,sizeof(_info)) ;
    strcpy(_info.edp_tab        , cur.getStr( 0,&isNull).c_str()) ;
    strcpy(_info.edp_col        , cur.getStr( 1,&isNull).c_str()) ;
    _info.edp_col_ord_id = cur.getInt( 2,&isNull,&null_value) ;
    strcpy(_info.edw_tab        , cur.getStr( 3,&isNull).c_str()) ;
    strcpy(_info.edw_col        , cur.getStr( 4,&isNull).c_str()) ;
    _info.col_flag       = cur.getInt( 5,&isNull,&null_value) ;
    _info.col_dim_flag   = cur.getInt( 6,&isNull,&null_value) ;
    strcpy(_info.dim_table      , cur.getStr( 7,&isNull).c_str()) ;
    strcpy(_info.dim_s_col      , cur.getStr( 8,&isNull).c_str()) ;
    strcpy(_info.dim_o_col      , cur.getStr( 9,&isNull).c_str()) ;
    strcpy(_info.dim_col_default, cur.getStr(10,&isNull).c_str()) ;
    _info.cycle_flag     = cur.getInt(11,&isNull,&null_value) ;
    _info.crack_flag     = cur.getInt(12,&isNull,&null_value) ;
    _info.dif_flag      = cur.getInt(13,&isNull,&null_value) ;
    _info.pass_flag      = cur.getInt(14,&isNull,&null_value) ;
    strcpy(_info.condition      , cur.getStr(15,&isNull).c_str()) ;
    _info.edw_tab_id      = cur.getInt(16,&isNull,&null_value) ; //if (_info.pass_flag == 1)
    // continue ;
    if (_info.cycle_flag != -1)
    {
    this->m_iCycleType = _info.cycle_flag ;
    strcpy(this->cycleEdpCol,_info.edp_col) ;
    } if (strcmp(_info.edw_tab,"-1")==0 )
    {
    this->specId = 1 ;
    }  我说的是这样的