比如一个存储过程create proc aa@a int output 
asset @a=100那我在aspx.cs页面如何取得@a的值呢。。?

解决方案 »

  1.   

    例如在向数据库添加新数据时,需要检测是否有重复
    本例介绍如何把这个检测的过程放在存储过程中,并用程序调用检测的结果做出反应。
    存储过程如下:
    CREATE PROCEDURE DInstitute_Insert
    @InstituteNO nvarchar(6),@InstituteName nvarchar(40)
     AS
    declare @return int,@count int
    if(ltrim(rtrim(@InstituteName))='' or ltrim(rtrim(@InstituteNO))='')
      select @return=3--返回3表示提交的数据有空值
    else
    begin
      select @count=count(1) from DInstitute where InstituteNO=@InstituteNO
     if(@count>0)
       select @return=1--返回1表示编号有重复
     else
     begin 
      insert into DInstitute (InstituteNO,InstituteName) values  (@InstituteNO,@InstituteName) 
      if(@@error>0)
        select @return=2--返回2表示数据操作错误
      else
        select @return=0--返回0表示数据操作成功
      end
    end
    return @return
    GO
    其中DInstitute 是一个学院信息表。只有InstituteNO(学院编号)、InstituteName(学院名称)两个字段。在C#中调用本存储过程的代码如下:
    //执行插入操作
                SqlCommand com1 = new SqlCommand("DInstitute_Insert", DBcon);
                if (com1.Connection.State == ConnectionState.Closed)
                    com1.Connection.Open();
                com1.CommandType = CommandType.StoredProcedure;
                com1.Parameters.Add(new SqlParameter("@InstituteNO",SqlDbType.NVarChar,6));
                com1.Parameters.Add(new SqlParameter("@InstituteName", SqlDbType.NVarChar, 40));
                com1.Parameters.Add(new SqlParameter("@return", SqlDbType.Int));
                com1.Parameters["@return"].Direction = ParameterDirection.ReturnValue;
                com1.Parameters["@InstituteNO"].Value = t_NO.Text;
                com1.Parameters["@InstituteName"].Value = t_name.Text;
                try
                {
                    com1.ExecuteScalar();
                }
                catch(SqlException ee)
                {
                    DB.msgbox("操作失败!"+ee.Message.ToString());
                    return;
                }
                finally
                {
                    com1.Connection.Close();
                }
                string temp = com1.Parameters["@return"].Value.ToString();
                //返回0表示数据操作成功
                //返回1表示编号有重复   
                //返回2表示数据操作错误 
                //返回3表示提交的数据有空值
                switch (temp)
                {
                    case "0":
                        DB.msgbox("添加成功!");
                        break;
                    case "1":
                        DB.msgbox("编号有重复!");
                        break;
                    case "2":
                        DB.msgbox("数据操作错误!");
                        break;
                    case "3":
                        DB.msgbox("提交的数据有空值!");
                        break;
                }
                Binding(); //刷新datagrid
      

  2.   

     com1.Parameters["@return"].Direction = ParameterDirection.ReturnValue; 
    这句话的意思是?
      

  3.   


    SqlConnection conn = ""; 
    conn.Open(); 
    SqlCommand MyCommand = new SqlCommand("", conn); 
    MyCommand.CommandType = CommandType.StoredProcedure; 
    MyCommand.Parameters.Add(new SqlParameter("@a", SqlDbType.Int)); 
    MyCommand.Parameters["@a"].Value = 10; 
    MyCommand.Parameters.Add(new SqlParameter("@b", SqlDbType.Int)); 
    MyCommand.Parameters["@b"].Value = 20; 
    MyCommand.Parameters.Add(new SqlParameter("@return", SqlDbType.Int)); 
    MyCommand.Parameters["@return"].Direction = ParameterDirection.ReturnValue; 
    MyCommand.ExecuteNonQuery(); 
    Response.Write(MyCommand.Parameters["@return"].Value.ToString()); 
    SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["LocalSqlServer"].ToString()); 
    conn.Open(); 
    SqlCommand MyCommand = new SqlCommand("", conn); 
    MyCommand.CommandType = CommandType.StoredProcedure; 
    MyCommand.Parameters.Add(new SqlParameter("@a", SqlDbType.Int)); 
    MyCommand.Parameters["@a"].Value = 20; 
    MyCommand.Parameters.Add(new SqlParameter("@b", SqlDbType.Int)); 
    MyCommand.Parameters["@b"].Value = 20; 
    MyCommand.Parameters.Add(new SqlParameter("@c", SqlDbType.Int)); 
    MyCommand.Parameters["@c"].Direction = ParameterDirection.Output; 
    MyCommand.ExecuteNonQuery(); 
    Response.Write(MyCommand.Parameters["@c"].Value.ToString()); 
      

  4.   

    ReturnValue 参数表示诸如存储过程、内置函数或用户定义函数之类的操作的返回值。