一个简单的oracle分页存储过程的实现和调用[2]

[入库:2005年8月18日] [更新:2007年3月24日]

本文简介:选择自 goodhy 的 blog

  end dotnetpagerecordscount;
 
 --**************************************************************************************
 
end dotnot;

------------------------------------------------------------------------------------------------------------------------------------------------------------------------
以下是在.net中调用oracle分页存储过程的步骤。(vb.net)
在.net调用返回记录集的存储过程,需要用到datareader,但是datareader不支持在datagrid中的分页,因此需要利用datagrid
自定义分页功能。


    protected withevents datagrid1 as system.web.ui.webcontrols.datagrid

    dim conn as new oracleclient.oracleconnection()
    dim cmd as new oracleclient.oraclecommand()
    dim dr as oracleclient.oracledatareader

private sub gridbind(byval pindex as integer, byval psql as string, optional byval psize as integer = 10)

        conn.connectionstring = "password=gzdlgis;user id=gzdlgis;data source=gzgis"
        cmd.connection = conn
        cmd.commandtype = commandtype.storedprocedure
        conn.open()

        '------------------------------------------------------------------------------------
        cmd.commandtext = "dotnot.dotnetpagerecordscount"
        '------------------------------------------------------------------------------------
        cmd.parameters.add("psqlcount", oracletype.varchar).value = psql
        cmd.parameters.add("prcount", oracletype.number).direction = parameterdirection.output

        cmd.executenonquery()

        me.datagrid1.allowpaging = true
        me.datagrid1.allowcustompaging = true
        me.datagrid1.pagesize = psize
        me.datagrid1.virtualitemcount = cmd.parameters("prcount").value

        cmd.parameters.clear()
        '------------------------------------------------------------------------------------
        cmd.commandtext = "dotnot.dotnetpagination"
        '------------------------------------------------------------------------------------
        cmd.parameters.add("pindex", data.oracleclient.oracletype.number).value = pindex
        cmd.parameters.add("psql", data.oracleclient.oracletype.varchar).value = psql '"select rownum rn,t.* from cd_ssxl t"
        cmd.parameters.add("psize", data.oracleclient.oracletype.number).value = psize
        cmd.parameters.add("v_cur", data.oracleclient.oracletype.cursor).direction = parameterdirection.output
        cmd.parameters.add("pcount", data.oracleclient.oracletype.number).direction = parameterdirection.output

        dr = cmd.executereader()

        me.datagrid1.datasource = dr
        me.datagrid1.databind()

        dr.close()
        conn.close()

        response.write("总计页数 " & cmd.parameters("pcount").value)
    end sub

----------------------------------------------------------------------------------------------------------------------------------------------------------------

    private sub page_load(byval sender as system.object, byval e as system.eventargs) handles mybase.load
        if not page.ispostback then
            dim psql as string = "select rownum rn,t.* from cd_ssxl t"
            gridbind(0, psql, 20)
            
        end if

    end sub

本文关键:一个简单的oracle分页存储过程的实现和调用
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top