sqlserver的存储过程如下
create procedure p_1
@a int output
as
select id,name from tableA存储过程本身带有output参数,并且还返回结果集。这种情况下代码如何写,请教大家

解决方案 »

  1.   

    alter procedure pp
    @a int output
    as
    select @a =5go declare @ss int
    exec pp @ss outputselect @ss as [返回值] 返回值
    -----------
    5(1 行受影响)
      

  2.   

    我错了,我是说net代码如何写。如何能去除outpu值还能取出结果集
      

  3.   

    Linq中在参数前面加ref
    你用这个方法试试
      

  4.   


    你是去除output取出结果集,还是既想取到output的值,又想得到结果集?如果是既想取到output值,又想得到结果集,用SqlDataAdapter就可以实现了DataSet ds = new DataSet();
    SqlDataAdapter da = new SqlDataAdapter(sqlCmd);
    da.Fill(ds);//取得结果集.
    int iOutput = 0;
    foreach (SqlParameter para in sqlCommand.Parameters)
    {
       if para.Direction == ParameterDirection.Output)
       {
            iOutput = (int)para.Value;
       }
    }
      

  5.   

            SqlConnection sqlconn = new SqlConnection(conn);
            SqlCommand cmd = new SqlCommand();
            cmd.Connection = sqlconn;
            cmd.CommandText = "";
            cmd.CommandType = CommandType.StoredProcedure;
            IDataParameter[] parameters = {
                    new SqlParameter("@Id", SqlDbType.Int,4) ,
                    new SqlParameter("@Name", SqlDbType.NVarChar,15) 
                };
            parameters[0].Direction = ParameterDirection.Output;        // 设置为输出参数
            parameters[1].Value = "";               
            cmd.Parameters.Add(parameters[0]);
            cmd.Parameters.Add(parameters[1]);
            cmd.Parameters.Add(parameters[2]);
            SqlDataAdapter dp = new SqlDataAdapter(cmd);
            DataSet ds = new DataSet();
            dp.Fill(ds);
            GridView1.DataSource = ds.Tables[0];
           GridView1.DataBind();
            Label1.Text +=  parameters[0].Value.ToString();CREATE PROCEDURE Categoriestest6
    @id int output,
    @Name nvarchar(15)
    AS
    select   @id = id from tb where name=@Name 
    select * from Tb
    GO