CREATE PROCEDURE k_kk (@a varchar,@b varchar output)
 AS
select * from biao where a=@a
select @b='c'
GO
SqlConnection con=new SqlConnection("data source=fds;uid=sa;pwd=ddda;initial catalog=hsb");
con.Open(); 
SqlCommand scd=new SqlCommand ("k_kk",con);
scd.CommandType=CommandType.StoredProcedure;
scd.Parameters.Add("@a",SqlDbType.VarChar);
scd.Parameters["@a"].Value="3";
scd.Parameters.Add("@b",SqlDbType.VarChar);
scd.Parameters["@b"].Direction=ParameterDirection.Output;
scd.ExecuteNonQuery();
this.label1.Text=scd.Parameters["@b"].Value.ToString();
//储存过程里设置了OUTPUT,为什么取不到呢,是哪里错了啊。

解决方案 »

  1.   

    cd.Parameters["@a"].Direction=ParameterDirection.input;加一句
      

  2.   


    SqlConnection con=new SqlConnection("data source=fds;uid=sa;pwd=ddda;initial catalog=hsb");
    con.Open(); 
    SqlCommand scd=new SqlCommand ("k_kk",con);
    scd.CommandType=CommandType.StoredProcedure;
    scd.Parameters.Add("@a",SqlDbType.VarChar,20);//加大小
    scd.Parameters["@a"].Value="3";
    scd.Parameters.Add("@b",SqlDbType.VarChar,20);//加大小
    scd.Parameters["@b"].Direction=ParameterDirection.Output;
    scd.ExecuteNonQuery();
    this.label1.Text=scd.Parameters["@b"].Value.ToString();
      

  3.   

    有一点很有意思,你必须设置Output参数的类型及长度楼主设置一下scd.Parameters["@b"]的长度
      

  4.   

    scd.Parameters.Add(new SqlParameter("@b",SqlDbType.VarChar,0,ParameterDirection.Output,false,0,0,"b",DataRowVersion.Default,null));
      

  5.   

    select * from biao where a=@a
    select @b='c'
    怀疑第一句就返回了
      

  6.   

    ^_^,我测试过的,楼主存储过程没问题,且楼主也写了output的,问题就是缺少size,所以无法查出赋值。用上面我贴的代码,我已经调试通过。放心用吧
      

  7.   

    Output参数必须设置类型和长度......