CREATE PROCEDURE TestProcedure
@Param1 INT,
@ReturnValue INT OUTPUT
AS
SET NOCOUNT ON
SELECT * FROM Test
SET @ReturnValue=@Param1+1
Return @ReturnValue+5这段存储过程有返回值,数据集,output类型的参数
怎么样使用C#得到这些值!!!
留下代码谢谢!

解决方案 »

  1.   

    [code=C#]
    private void sql_proc()
      {
        
       
       SqlConnection conn=new SqlConnection("server=.;uid=sa;pwd=1234;database=china");
       string sql="proc_out";
       SqlCommand comm=new SqlCommand(sql,conn);
       
       //把Command执行类型改为存储过程方式,默认为Text。
       comm.CommandType=CommandType.StoredProcedure;   //传递一个输入参数,需赋值
       SqlParameter sp=comm.Parameters.Add("@uid",SqlDbType.Int);
       sp.Value=10;   //定义一个输出参数,不需赋值。Direction用来描述参数的类型
       //Direction默认为输入参数,还有输出参数和返回值型。
       sp=comm.Parameters.Add("@output",SqlDbType.VarChar,50);
       sp.Direction=ParameterDirection.Output;   //定义过程的返回值参数,过程执行完之后,将把过程的返回值赋值给名为myreturn的Paremeters赋值。
       sp=comm.Parameters.Add("myreturn",SqlDbType.Int);
       sp.Direction=ParameterDirection.ReturnValue;
       
       //使用SqlDataAdapter将自动完成数据库的打开和关闭过程,并执行相应t-sql语句或存储过程
       //如果存储过程只是执行相关操作,如级联删除或更新,使用SqlCommand的execute方法即可。
       SqlDataAdapter da=new SqlDataAdapter(comm);
       DataSet ds=new DataSet();
       da.Fill(ds);
       
       
       //在执行完存储过程之后,可得到输出参数 
       string myout=comm.Parameters["@output"].Value.ToString();
       
       //打印输出参数:
       Response.Write("打印输出参数:"+myout);   //打印存储过程返回值
       myout=comm.Parameters["myreturn"].Value.ToString();
       Response.Write("存储过程返回值:"+myout);   this.DataGrid1.DataSource=ds;
       this.DataGrid1.DataBind();
      }
    [code]
      

  2.   

       添加参数就用这个语句,
       sp=comm.Parameters.Add("@output",SqlDbType.VarChar,50); 
       sp.Direction=ParameterDirection.Output; 
       取返回值
       comm.Parameters["myreturn"].Value.ToString();