protected void Page_Load(object sender, EventArgs e)
    {
SqlConnection con = new SqlConnection("server=127.0.0.1;database=pubs;uid=sa;password=''");
SqlCommand cmd = new SqlCommand("GetLastname", con);
string strLastname;
cmd.CommandType = CommandType.StoredProcedure;
//firstname input parameter
cmd.Parameters.AddWithValue("@firstname", "Ann");
//lastname output parameter
SqlParameter paraLastname = cmd.Parameters.AddWithValue("@lastname", SqlDbType.VarChar);
paraLastname.Size = 40;
paraLastname.Direction = ParameterDirection.Output;
//Execute Command
con.Open();
cmd.ExecuteScalar();
//Retrieve value of output parameter
if (cmd.Parameters["lastname"].Value != null)
{
strLastname = cmd.Parameters["lastname"].Value.ToString();
}
else
{
strLastname = "Unknown";
}
con.Close();
Response.Write("The last name is" + strLastname);
}//------------------------------存储过程
    Create Procedure GetLastname
(
@firstname Varchar(20),
@lastname Varchar(20) Output
)
As
Select @lastname=au_lname
From Authors
Where au_fname=@firstname
//---------------------------------------
执行后提示将数据类型 varchar 转换为 int 时出错.谁能告诉我是什么原因,存储过程在查询分析器里调试可以正常显示,我用的是vs2005

解决方案 »

  1.   

    没看出来哪里有类型转换的迹象啊。 你尝试把cmd.ExecuteScalar();换成其他方法如试试
      

  2.   

    SqlParameter paraLastname = cmd.Parameters.AddWithValue("@lastname", SqlDbType.VarChar);
    这里不要用AddWithValue,没有value吧
      

  3.   

    我没用过vs2005和AddWithValue这个方法,猜测第2个参数是可能是字符串,而SqlDbType.VarChar类型的值默认是int的,问题可能就在这里。
      

  4.   

    cmd.Parameters["lastname"].Value 和strLastname = cmd.Parameters["lastname"].Value.ToString();变量名前都必须有“@”即须将以上两句改成:
    cmd.Parameters["@lastname"].Value 和strLastname = cmd.Parameters["@lastname"].Value.ToString();
      

  5.   


    SqlParameter paraLastname = cmd.Parameters.AddWithValue("@lastname", SqlDbType.VarChar);改为:
    SqlParameter paraLastname = cmd.Parameters.Add("@lastname", SqlDbType.VarChar,20);
      

  6.   

    Select @lastname=au_lname
    From Authors
    Where au_fname=@firstname这里估计有问题,你检查下au_fname是不是int型的
      

  7.   

    按照GSXiaoXiao(牧羊人) 的方法可以执行,但是在vs2005中默认没有Add这个函数啊,还有别的方法吗?