CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
IBM Rational 系统开发最佳实践工具包 WebSphere MQ 最佳实践 TOP 15
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  ASP.NET

执行存储过程,获取out返回值问题

楼主ares1982526()2006-03-06 13:57:26 在 .NET技术 / ASP.NET 提问

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 问题点数:20、回复次数:7Top

1 楼xiahouwen(武眉博<活靶子.NET>)回复于 2006-03-06 14:14:41 得分 0

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

2 楼astra1(Hyperion)回复于 2006-03-06 14:14:58 得分 0

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

3 楼xiahouwen(武眉博<活靶子.NET>)回复于 2006-03-06 14:28:34 得分 0

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

4 楼pangyong0221(Forget)回复于 2006-03-06 14:32:25 得分 0

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

5 楼GSXiaoXiao(牧羊人)回复于 2006-03-06 14:32:35 得分 20

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

6 楼hedonister(冰戈)回复于 2006-03-06 14:33:28 得分 0

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

7 楼ares1982526()回复于 2006-03-06 15:03:30 得分 0

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

相关问题

  • 我执行的存储过程返回一个记录数,请问如何获取这个数据?
  • 怎样获取存储过程的执行结果?
  • 如何获取存储过程的返回值!
  • 如何获取存储过程的返回值?
  • 怎么在C++Builder中获取存储过程的返回值
  • 在ASP中,怎样获取存储过程return返回的值??
  • 如何获取一个存储过程的返回值?谢了
  • 存储过程的执行语句, 返回的是 false ??
  • 有关执行存储过程返回值的问题
  • ExecuteNonQuery执行存储过程的返回值是什么?

关键词

  • vs2005
  • 存储过程
  • 执行
  • vs
  • paralastname
  • lastname
  • strlastname
  • addwithvalue
  • cmd
  • sqldbtype

得分解答快速导航

  • 帖主:ares1982526
  • GSXiaoXiao

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo