//Comm.CommandText = "p_Checked";  这里的 p_Checked 是怎么写的 
oracle调用select的过程跟sql server是不一样的需要定义个个package创建一个包,含有一个游标类型给一个demo
------------------
在 Oracle 中,请按以下步骤操作:(1)创建一个包,含有一个游标类型:(一个数据库中只需作一次)CREATE OR REPLACE PACKAGE Test
  AS
       TYPE Test_CURSOR IS REF CURSOR;
END Test;(2)过程:CREATE OR REPLACE PROCEDURE GetCategoryBooks
(
     p_CURSOR out Test.Test_CURSOR,    -- 这里是上面包中的类型,输出参数
     p_CatogoryID INTEGER
)
AS
BEGIN
     OPEN p_CURSOR FOR
           SELECT * FROM Books
           WHERE CategoryID=p_CatogoryID;
END GetCategoryBooks;(3).NET 程序中:OracleParameters parameters = {
     new OracleParameter("p_CURSOR", OracleType.CURSOR, 2000, ParameterDirection.Output, true, 0, 0, "",
          DataRowVersion.Default, Convert.DBNull),
     new OracleParameter("p_CatogoryID", OracleType.Int32)
};parameters[1].Value = 22;OracleConnection connection = new OracleConnection( ConnectionString );
OracleCommand command = new OracleCommand("GetCategoryBooks", connection);
command.CommandType = CommandType.StoredProcedure;foreach(OracleParameter parameter in parameters)
     command.Parameters.Add( parameter );connection.Open();
OracleDataReader dr = command.ExecuteReader();while(dr.Read())
{
    // 你的具体操作。这个就不需要我教吧?
}
connection.Close();

解决方案 »

  1.   

    不是这样的啊,我已经照着你的样子写了可还是找不到啊代码如下
    ------------------------------------------------------------------------------
    System.Data.OracleClient.OracleConnection Conn = new System.Data.OracleClient.OracleConnection();
    Conn.ConnectionString = "Data Source=japee;user=zhuser;password=1";
    Conn.Open(); System.Data.OracleClient.OracleCommand Comm = new System.Data.OracleClient.OracleCommand();
    Comm.Connection = Conn;
          Comm.CommandType = CommandType.StoredProcedure;
          Comm.CommandText = "p_Checked";       OracleParameter parameter1 = new OracleParameter("p_ID",System.Data.OracleClient.OracleType.VarChar,20,ParameterDirection.Input,true,0,0,"",DataRowVersion.Default,UID);
                OracleParameter parameter2 = new OracleParameter("p_UPass",System.Data.OracleClient.OracleType.VarChar,20,ParameterDirection.Input,true,0,0,"",DataRowVersion.Default,UPass);
          OracleParameter parameter3 = new OracleParameter("v_cursor",System.Data.OracleClient.OracleType.Cursor,0,ParameterDirection.Output,true,0,0,"",DataRowVersion.Default,Convert.DBNull);      Comm.Parameters.Add(parameter1);
         Comm.Parameters.Add(parameter2);
           Comm.Parameters.Add(parameter3);
      

  2.   

    你的p_Checked过程封包了没?如果在包里,应该是包名.p_Checked