CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C++ Builder >  基础类

如何获取调用SQL存储过程后的结果值?

楼主dragon_lh()2001-08-15 12:53:28 在 C++ Builder / 基础类 提问

        有一存储过程CREATE   procedure   stops_new1   @direction   tinyint,@train_code   varchar(4)  
  as  
  declare   @selfno   varchar(2),@train_no   char(8),@limit   varchar(2),@change   bit,@answer   nvarchar(255)   ,@tim   char(4),@L   varchar(12),@code_out   varchar(20),@train_code1   varchar(6),@status   smallint  
  declare   @my_station_name   varchar(16),@i   smallint,@answer1   nvarchar(255)  
   
  我想取回answer   和answer1的值,具体程序是:  
          StoredProc1->ParamByName("@direction")->AsSmallInt   =   0;  
          StoredProc1->ParamByName("@train_code")->AsString="41"  
          if   (StoredProc1->Prepared==false)     StoredProc1->Prepare(   );  
              StoredProc1->ExecProc(   );  
   
                         
                            StoredProc1->Open();  
       
                  StoredProc1->GetResults();  
                  result=StoredProc1->ParamByName("answer")->AsString;  
   
  结果显示没有answer这个参数     ,我用FieldByName("answer")->AsString   也不行。  
  问题点数:26、回复次数:15Top

1 楼windindance(风舞轻扬·白首为功名)回复于 2001-08-15 12:58:47 得分 0

StoredProc1->ParamByName("@answer")->AsString;  
   
  procedure   stops_new1    
      @direction   tinyint,  
      @train_code   varchar(4),  
      @Answer   nvarchar(255)   output  
  as  
  ...  
  Top

2 楼dragon_lh()回复于 2001-08-15 14:33:09 得分 0

还是出现   Paramer   "@answer"   not   foundTop

3 楼dragon_lh()回复于 2001-08-15 14:37:03 得分 0

            此存储过程在VB中调用好好的,.Fields("answer")可取回值  
  换在CB中返回值不知怎么写Top

4 楼dragon_lh()回复于 2001-08-15 14:40:55 得分 0

      快来救救我,解决了问题一定加分!Top

5 楼whitelion(www.ccproj.com)回复于 2001-08-15 14:53:11 得分 0

好象在bcb中,存储过程中没有返回值的  
  如果要返回值,需要改为query控件的select   ....  
  帮你推推Top

6 楼dragon_lh()回复于 2001-08-15 15:18:52 得分 0

                还是没有解决Top

7 楼windindance(风舞轻扬·白首为功名)回复于 2001-08-16 11:56:04 得分 10

实在不行,你就用Query->SQL->Text   =   "exec   you_proc   ...";吧。Top

8 楼dragon_lh()回复于 2001-08-17 08:47:37 得分 0

  我用QUERY时说找不到存储过程stops_new这个对象.   用C++bUILDER   到底怎么才能取回SQL    
  Server   存储过程的返回值,各位知道此用法帮帮忙!Top

9 楼LuoGD(抢第一楼)回复于 2001-08-17 09:32:13 得分 0

关注中Top

10 楼windindance(风舞轻扬·白首为功名)回复于 2001-08-17 11:52:06 得分 0

用QUERY时说找不到存储过程stops_new这个对象?  
  1   有没有正确连接?  
  2   用ADO看看。  
  Top

11 楼dragon_lh()回复于 2001-08-17 11:57:49 得分 0

    ADO我不会用,别人在VB中调用这个存储过程挺好的   Top

12 楼dragon_lh()回复于 2001-08-17 12:42:49 得分 0

存储过程大抵是这样:  
  CREATE   procedure   stops_new   @direction   tinyint,   @train_code   varchar(4)  
  as  
  declare   @selfno   varchar(2),@train_no   char(8),@limit   varchar(2),  
  @change   bit,@answer   nvarchar(255)   ,@tim   char(4),@L   varchar(12),  
  @code_out   varchar(20),@train_code1   varchar(6),@status   smallint  
  declare   @my_station_name   varchar(16),@i   smallint,  
  @answer1   nvarchar(255)  
   
  select   @i=0  
  select   @answer='',@answer1=''  
  declare   c2   cursor   for   select   train_no   from   tystops_time_bak    
  where   @train_code=case        
    when   substring(station_train_code,1,1)   in   ('T','K','L','Y')  
    then   rtrim(substring(station_train_code,2,3))  
    else   rtrim(station_train_code)   end  
  open   c2  
  fetch   c2   into   @train_no  
  while   @@fetch_status=0  
      begin  
        select   @i=@i+1                            
        ...  
      end  
   
  close   c2      
  deallocate   c2        
  if   @i=0         /*   没有查到信息     */  
      begin    
        select   '柚'   as   answer,''   as   answer2   return    
      end          
  return  
  在VB中用ADO调用该存储过程时能正确返回answer   answer2的值  
  现在通过c++   builder   的storeproc   调用存储过程,不管参数怎么设置.  
  结果为answer='柚'   answer2   =''   .从存储过程看游标c2指向的第一行就不存在.事实上  
  这个查询是应有结果.Top

13 楼dragon_lh()回复于 2001-08-20 16:41:21 得分 0

        谢谢大家的关注,这问题已获解决.  
  对于C++Builder调用SQL存储过程,若要获取结果集,一定要用TQuery,SQL语句这样写  
  exec   存储过程名   参数1名=值   ,参数2名=值.     还有一点我也不明白SQL存储过程中返回参数  
  不要用nvarchar类型   ,可用varchar类型.   Top

14 楼shak(孙诗美)回复于 2001-08-21 02:30:31 得分 16

我爱你!!!!!  
   
  请给我分,我已经没有分了.就不能提问了,不幸的大白鲨  
  请帮助我  
  http://www.csdn.net/expert/TopicView.asp?id=244358   速成高手的问题????????100000风  
  http://www.csdn.net/expert/TopicView.asp?id=246638   大白鲨-高分请教  
  http://www.csdn.net/expert/TopicView.asp?id=224469   shak:报考2001年中级程序员和初级程序员请进!!!!  
  http://www.csdn.net/expert/TopicView.asp?id=224471   提议大家一起来汉化C++BUILDER  
  http://www.csdn.net/expert/TopicView.asp?id=244357   《C++Builder编程技巧全集》之“系统函数"Top

15 楼agecntao(火鸟)回复于 2001-08-21 08:29:03 得分 0

SQL存储过程也能返回纪录集(DataSet),只要用的是open方法,sp中有返回纪录的sql语句  
  如select  
   
  我的报表就用sp做的Top

相关问题

  • SQL中存储过程调用存储过程,怎么取返回值
  • 哪位大侠会用VB调用SQL Server的存储过程,并可得到存储过程的返回值?
  • 在存储过程中调用另一个存储过程的返回值的SQL语句怎么写啊?
  • Ado调用Sql server7.0存储过程
  • asp调用sql存储过程问题
  • 关于调用存储过程(SQL SERVER)
  • ※ Asp 中调用 Sql Server 存储过程 ※
  • odbc调用sql存储过程出错
  • SQL存储过程中调用 xmlhttp
  • 调用oracle存储过程错:ora-06502:PL/SQL数字或值错误

关键词

  • .net
  • c++builder
  • 存储过程
  • vb
  • code
  • ado
  • sql
  • storedproc
  • answer
  • train

得分解答快速导航

  • 帖主:dragon_lh
  • windindance
  • shak

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

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