CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
花落谁家,你作主! 盛大widget设计大赛英雄榜
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  数据库相关

如何用 quey 动态地调用 SQLSERVER 2000 的存储过程?

楼主zjingl(风)2005-06-01 20:00:28 在 Delphi / 数据库相关 提问

如何用   quey   动态地调用   SQLSERVER   2000   的存储过程?存储过程中有输入输出参数,输出参数为整数。  
  请各位高手多多指教。 问题点数:60、回复次数:26Top

1 楼zjingl(风)回复于 2005-06-01 20:01:21 得分 0

放心吧!我的分多的是,答对了一定给分。Top

2 楼freewind88(风林火山)回复于 2005-06-01 20:14:21 得分 0

动态创建参数Top

3 楼vfork(學習htm、css、js、java,然後到ajax。)回复于 2005-06-01 20:18:08 得分 0

Query.SQL.Add('p_exporttb   过程名');  
  Query.Excute;Top

4 楼smiler007(笑一笑)回复于 2005-06-01 20:19:44 得分 0

怎么不用StoredProc控件或者AdoStoredProc控件呢?Top

5 楼xinshiji(自由我有)回复于 2005-06-01 20:24:41 得分 0

怎么不用StoredProc控件或者AdoStoredProc控件呢?Top

6 楼jkx01whg(爱迪01)回复于 2005-06-01 20:25:26 得分 0

upTop

7 楼zjingl(风)回复于 2005-06-02 16:42:27 得分 0

vfork(珠江水洗鸡巴)Top

8 楼zjingl(风)回复于 2005-06-02 16:46:36 得分 0

TO     vfork(珠江水洗鸡巴)  
  请给出详细代码。  
  存储过程中要有输入输出参数,输出参数为整数。  
  Top

9 楼zjingl(风)回复于 2005-06-02 16:49:08 得分 0

如果没有输出参数我也会。Top

10 楼advancejar(金谜)回复于 2005-06-02 16:51:59 得分 0

看书上说  
  DELPHI   7.0   的那个存储过程的控件不知道SQL   Server2000的输出函数  
  我不认为这是真的  
  所以关注这个帖子Top

11 楼zjingl(风)回复于 2005-06-02 16:52:00 得分 0

TO   smiler007(笑一笑)      
  我想在三层结构中动态调用。Top

12 楼zjingl(风)回复于 2005-06-03 18:17:49 得分 0

没人懂吗?  
  真遗憾!  
  Top

13 楼delphiseabird(沙鸥)回复于 2005-06-03 18:28:27 得分 0

excute   urProc   parm1,parm2,...  
   
  执前可以传入参数,执行后可以取出参数  
   
  ---------------------------------------  
   
                欢迎访问   http://www.coderpub.com   技术论坛Top

14 楼zjingl(风)回复于 2005-06-03 18:33:47 得分 0

TO   delphiseabird(沙鸥)  
  请给出详细代码好吗?  
  Top

15 楼zjingl(风)回复于 2005-06-03 18:37:59 得分 0

TO   delphiseabird(沙鸥)  
  包括动态参数的建立,输出参数为整数.Top

16 楼under()回复于 2005-06-04 10:41:52 得分 0

怎么不用StoredProc控件或者AdoStoredProc控件呢?  
  Top

17 楼zjingl(风)回复于 2005-06-04 16:50:00 得分 0

to     under()    
  我想在三层结构中动态调用。Top

18 楼zjingl(风)回复于 2005-06-05 17:25:09 得分 0

难道真的没有人用过吗?真的令人觉得太遗憾了?  
  呜呼!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!Top

19 楼kwer(理想生活:白天种地,晚上上网 ) (▲▲▲▲▲▲)回复于 2005-06-13 17:30:23 得分 0

如何用   quey   动态地调用   SQLSERVER   2000   的存储过程?存储过程中有输入输出参数,输出参数为整数。  
  请各位高手多多指教。  
  --  
  query   在   Query.Excute   后可以返回结果吗?  
  还是   Open   ?(会报错?)Top

20 楼mqjshanghai(有了她)回复于 2005-06-14 00:13:26 得分 0

帮你顶下,大哥给我5分,我要求不高Top

21 楼appley(陈泊)回复于 2005-06-14 06:25:53 得分 0

用存储过程控件不就行了吗Top

22 楼jkx01whg(爱迪01)回复于 2005-06-14 09:55:51 得分 0

用  
  Query.SQL.Add('p_exporttb   过程名');  
  Query.Excute;  
  可以啊,除非你的存储过程有错Top

23 楼coffee36(咖啡)回复于 2005-06-14 10:52:33 得分 5

 
  使用ADOSTOREDPROC就可以了。  
  动态创建它就行  
   
  var    
  p:tadostoredproc;  
  my_fwreateb,my_fwreates:double;  
  begin      
   
      p   :=   TADOStoredProc.Create(self);  
          p.Connection   :=   dmform.ADOConnection1;  
          p.ProcedureName   :=   'payfee';//存储过程名  
   
          with   p.Parameters.AddParameter     do  
          begin  
              DataType   :=   ftstring;  
              Direction   :=   pdinput;//输入参数  
              Value   :=   HZNo   ;  
          end;  
          with   p.Parameters.AddParameter     do  
          begin  
              DataType   :=   ftstring;  
              Direction   :=   pdinput;  
              Value   :=   MZNo   ;  
          end;  
          with   p.Parameters.AddParameter     do  
          begin  
              DataType   :=   ftstring;  
              Direction   :=   pdinput;  
              Value   :=   SPNo   ;  
          end;  
          with   p.Parameters.AddParameter   do  
          begin  
              DataType   :=   ftfloat;  
              Direction   :=   pdinput;  
              Value   :=   strtofloat(SPCnt)   ;  
          end;  
          with   p.Parameters.AddParameter     do  
          begin  
              DataType   :=   ftstring;  
              Direction   :=   pdinput;  
              Value   :=   SPU   ;  
          end;  
          with   p.Parameters.AddParameter   do  
          begin  
              DataType   :=   ftfloat;  
              Direction   :=   pdinput;  
              Value   :=   strtofloat(SPPe)   ;  
          end;  
          with   p.Parameters.AddParameter     do  
          begin  
              DataType   :=   ftstring;  
              Direction   :=   pdinput;  
              Value   :=   Staffno   ;  
          end;  
          with   p.Parameters.AddParameter     do  
          begin  
              DataType   :=   ftstring;  
              Direction   :=   pdinput;  
              Value   :=   JYNo   ;  
          end;  
          with   p.Parameters.AddParameter     do  
          begin  
              DataType   :=   ftstring;  
              Direction   :=   pdinput;  
              Value   :=   JYLS   ;  
          end;  
          with   p.Parameters.AddParameter     do  
          begin  
              DataType   :=   ftinteger;  
              Direction   :=   pdinput;  
              Value   :=   0   ;  
          end;  
   
          with   p.Parameters.AddParameter   do  
          begin  
              DataType   :=   ftinteger;  
              Direction   :=   pdinput;  
              if   huipino   =   ''   then  
              begin  
                  Value   :=   0;  
              end  
              else  
              begin  
                  Value   :=   strtoint(huipino)   ;  
              end;  
          end;  
          with   p.Parameters.AddParameter   do  
          begin  
              DataType   :=   ftinteger;  
              Direction   :=   pdoutput;//输出参数  
              Name   :=   'retval'   ;  
          end;  
          with   p.Parameters.AddParameter   do  
          begin  
              DataType   :=   ftfloat;  
              Direction   :=   pdoutput;  
              Name   :=   'fwrateb'   ;  
          end;  
          with   p.Parameters.AddParameter   do  
          begin  
              DataType   :=   ftfloat;  
              Direction   :=   pdoutput;  
              Name   :=   'fwrates'   ;  
          end;  
   
   
   
          p.ExecProc   ;  
   
          ret   :=   p.Parameters.ParamValues['retval'];//存储过程返回值  
          my_fwreateb:=p.p.Parameters.ParamValues['fwrateb'];   //输出参数  
          my_fwreates:=p.p.Parameters.ParamValues['fwrates'];   //输出参数  
          p.free;  
           
   
   
   
  Top

24 楼Hank(星星农场)回复于 2005-06-14 11:15:48 得分 7

 
   
  本来很简单的问题非要搞的这么复杂!  
   
  通过ADOQuery.SQL.Add('exec   spproc   参数一,参数二');  
  具体参看SQL的帮助  
  然后  
  ADOQuery.Execute;  
  如果有返回值也就是有输出参数,那么大不了存储过程最后一行加入  
  SELECT   参数1,参数2,参数3  
  然后通过adoquery.fieldbyname就可以调用了Top

25 楼belllab(菜鸟)回复于 2005-06-14 13:53:38 得分 48

只有输入参数的话,很简单  
  ADOQuery.SQL.Add('Exec   MySP   :参数一,:参数二');  
  ADOQuery.Parameters.ParamByName('参数一').Value:=AAAA;  
  或Query.ParamByName('参数一').AsInteger:=AAAA;  
   
  如果有输出参数的话,稍微麻烦一点  
  Query.SQL.Add('declare   @OP1   int,@OP2   int');  
  Query.SQL.Add('Exec   MySP   :参数一,:参数二,@OP1   output,@OP2   output   ');  
  Query.SQL.Add('select   OP1=@OP1,OP2=@OP2   ');  
  Query.Open;  
  Top

26 楼zjingl(风)回复于 2005-06-14 18:12:50 得分 0

谢谢各位,让我试试看.Top

相关问题

  • command调用sqlserver存储过程问题
  • 存储过程调用存储过程
  • 调用存储过程的一个怪问题(sqlserver)
  • 请教php+sqlserver怎样调用存储过程?
  • 关于Delphi调用SQLServer的存储过程
  • VB6调用SQLServer存储过程出错……求助
  • help~~~关于调用sqlserver存储过程的问题
  • vb调用sqlserver存储过程的问题
  • 调用SqlServer存储过程传值问题
  • 在java中调用sqlserver存储过程的问题?

关键词

  • 存储过程
  • 控件
  • sqlserver
  • sql
  • 参数
  • quey
  • pdinput
  • 调用
  • 输出
  • addparameter

得分解答快速导航

  • 帖主:zjingl
  • coffee36
  • Hank
  • belllab

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

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