"ORA-06550: line 1, column 7:\nPLS-00201: identifier 'DOTNOT.DOTNETPAGERECORDSCOUNT' must be declared\nORA-06550: line 1, column 7:\nPL/SQL: Statement ignored\n"现下面的问题怎样解决,错在那里?

解决方案 »

  1.   

    create or replace package DotNet as   -- Author  : good_hy
      -- Created : 2004-12-13 13:30:30
      -- Purpose : 
      
      TYPE type_cur IS REF CURSOR;     --定义游标变量用于返回记录集
        
      PROCEDURE DotNetPagination(      
      Pindex in number,                --分页索引   
      Psql in varchar2,                --产生dataset的sql语句
      Psize in number,                 --页面大小
      Pcount out number,               --返回分页总数
      v_cur out type_cur               --返回当前页数据记录
      );  
      
      procedure DotNetPageRecordsCount(
      Psqlcount in varchar2,           --产生dataset的sql语句                           
      Prcount   out number             --返回记录总数
      );
      
    end ;-------------------------------------------------------------------------------create or replace package body DotNet is --***************************************************************************************
     
     PROCEDURE DotNetPagination(
      Pindex in number,
      Psql in varchar2, 
      Psize in number,  
      Pcount out number,
      v_cur out type_cur
     )
     AS  v_sql VARCHAR2(1000);
      v_count number;  
      v_Plow number;
      v_Phei number;
     Begin
      ------------------------------------------------------------取分页总数
      v_sql := 'select count(*) from (' || Psql || ')';
      execute immediate v_sql into v_count;
      Pcount := ceil(v_count/Psize);
      ------------------------------------------------------------显示任意页内容
      v_Phei := Pindex * Psize + Psize;
      v_Plow := v_Phei - Psize + 1;
      --Psql := 'select rownum rn,t.* from cd_ssxl t' ;            --要求必须包含rownum字段
      v_sql := 'select * from (' || Psql || ') where rn between ' || v_Plow || ' and ' || v_Phei ;  open v_cur for v_sql;
      
     End ;
     
     --**************************************************************************************
     
     procedure DotNetPageRecordsCount(
      Psqlcount in varchar2,
      Prcount   out number
      )
      as
      
       v_sql varchar2(1000);
       v_prcount number;
       
      begin
      
       v_sql := 'select count(*) from (' || Psqlcount || ')';
       execute immediate v_sql into v_prcount;
       Prcount := v_prcount;                  --返回记录总数                                                      
       
      end DotNetPageRecordsCount;
      
     --**************************************************************************************
     
    end ;下面是c#代码
    //分页存储过程
    //Create By Wcy
    //Create Date:2006-07-31
    public static void GridBind(C1.Web.C1WebGrid.C1WebGrid fDataFrid,int pindex ,String psql,int psize,TextBox pcount)
    {
    string strcn=System.Configuration.ConfigurationSettings.AppSettings["connection_string"];
    OracleConnection gCn;
    OracleCommand Cmd;
    //OracleDataAdapter adp;
    OracleDataReader dr; try
    {
    gCn=new OracleConnection(strcn);
    gCn.Open();
    Cmd=new OracleCommand(psql,gCn);
    Cmd.CommandType = CommandType.StoredProcedure;
    Cmd.CommandText="DotNot.DotNetPageRecordsCount";
    Cmd.Parameters.Add("psqlcount", OracleType.VarChar).Value = psql;
    Cmd.Parameters.Add("prcount", OracleType.Number).Direction = ParameterDirection.Output;
    Cmd.ExecuteNonQuery();
    fDataFrid.AllowPaging = true;
    fDataFrid.AllowCustomPaging = true;
    fDataFrid.PageSize = psize;
    fDataFrid.VirtualItemCount =int.Parse(((Decimal)Cmd.Parameters["prcount"].Value).ToString()); 
    Cmd.Parameters.Clear();
    Cmd.CommandText = "DotNot.DotNetPagination";
    Cmd.Parameters.Add("pindex", OracleType.Number).Value = pindex;
    Cmd.Parameters.Add("psql", OracleType.VarChar).Value = psql;//"select rownum rn,t.* from cd_ssxl t"
    Cmd.Parameters.Add("psize", OracleType.Number).Value = psize;
    Cmd.Parameters.Add("v_cur", OracleType.Cursor).Direction = ParameterDirection.Output;
    Cmd.Parameters.Add("pcount", OracleType.Number).Direction = ParameterDirection.Output;
    // adp=new OracleDataAdapter(Cmd);
    // DataTable Dt=new DataTable();
    // adp.Fill(Dt);
    // fDataFrid.DataSource=Dt;
    // fDataFrid.DataBind();
    dr = Cmd.ExecuteReader();
    fDataFrid.DataSource = dr;
    fDataFrid.DataBind();
    dr.Close();
    pcount.Text=((int)Cmd.Parameters["pcount"].Value).ToString();
    gCn.Close(); }
    catch (System.Exception Ex)
    {
    throw(Ex);
    }
    finally
    {
    gCn=null;
    Cmd=null;
    //adp=null;
    }
    }