CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  VCL组件开发及应用

DELPHI中关于调用SQL SERVER存储过程???(高分相送)

楼主boyqing(阿清)2002-03-19 09:42:10 在 Delphi / VCL组件开发及应用 提问

SQL   SERVER存储过程如下   :  
  CREATE   PROCEDURE   MZSF_XMJG123  
  (  
    @xmdh   numeric(5,0)  
  )  
  AS  
  declare   @jg   money  
  begin  
          if   exists(   select   jg1     from   yp_ypjgsd       where   xmdh=@xmdh)  
        begin  
                        select   @jg=(   select   jg1     from   yp_ypjgsd       where   xmdh=@xmdh)  
        end  
        else  
                        select   @jg=0    
  end  
  我在DELPHI这样用:  
            with   query1   do  
            begin  
                      close;  
                      sql.clear;  
                      sql.add('mzsf_xmjg123   :xmdh');  
                      parambyname('xmdh').asinteger:=1123;  
                      open;  
            end;  
  运行时提示:‘Error   Creating   Cursor   handle’  
  用存储过程也不行!  
  但是如果存储过程这样写:  
  CREATE   PROCEDURE   MZSF_XMJG  
  (  
    @xmdh   numeric(5,0)  
  )  
  AS  
  begin  
            select   jg1   as   jg    
            from   yp_ypjgsd  
            where   xmdh=@xmdh  
  end  
  这样调用:  
            with   query1   do  
            begin  
                      close;  
                      sql.clear;  
                      sql.add('mzsf_xmjg   :xmdh');  
                      parambyname('xmdh').asinteger:=1123;  
                      open;  
            end;  
  就不会出错有返回结果!  
  希望大家能有一个好的办法,我要在存储过程中判断是否合理可能有很多判断条件,只要最终返回自己需要的返回结果就可以了!  
  不要改变原来的意图(因为只有一个返回结果我可以很容易判断) 问题点数:100、回复次数:13Top

1 楼chechy(www.qdocuments.net)回复于 2002-03-19 09:45:43 得分 10

为什么不用TStoredProc控件?如果返回数据集,用storedProc1.Open,否则就用storedProc1.ExecProc;Top

2 楼liuziran(.NET图表组件开发商 http://www.isoftone.com)回复于 2002-03-19 09:50:19 得分 40

select   @jg=(   select   jg1     from   yp_ypjgsd       where   xmdh=@xmdh)  
  一句改成:  
  select   @jg=jg1     from   yp_ypjgsd       where   xmdh=@xmdh)  
  Top

3 楼boyqing(阿清)回复于 2002-03-19 09:55:07 得分 0

To:liuziran(倒立旋风转的青蛙)  
  select   @jg=(   select   jg1     from   yp_ypjgsd       where   xmdh=@xmdh)  
  一句改成:  
  select   @jg=jg1     from   yp_ypjgsd       where   xmdh=@xmdh)  
  还是不行呀  
   
     
  Top

4 楼genphone_ru(哎,什么都要学,真累)回复于 2002-03-19 09:57:49 得分 40

with   query1   do  
            begin  
                      close;  
                      sql.clear;  
                      sql.add('Execute   mzsf_xmjg123   :xmdh');  
                      parambyname('xmdh').asinteger:=1123;  
                      ExecSQL;  
            end;  
  Top

5 楼liuziran(.NET图表组件开发商 http://www.isoftone.com)回复于 2002-03-19 10:05:05 得分 0

如果要输出@jg的话,应该声明:  
  CREATE   PROCEDURE   MZSF_XMJG123  
  (  
    @xmdh   numeric(5,0),  
    @jg   money   output  
  )  
  AS  
  ...Top

6 楼boyqing(阿清)回复于 2002-03-19 10:10:20 得分 0

回复:   genphone_ru(票票)    
  不行,还是老样子Top

7 楼humer(大刀杀蚂蚁)回复于 2002-03-19 10:20:55 得分 5

别用了tquery了,用tstoreproc来调用存储过程。Top

8 楼blackfiles(一个和尚挑水喝)回复于 2002-03-19 10:22:50 得分 5

同意liuziran的,  
        首先过程里面要有输出声明,程序执行才可以得到返回值哦。Top

9 楼boyqing(阿清)回复于 2002-03-19 10:31:10 得分 0

用tstoreproc来调用存储过程  
  问题依然一样Top

10 楼outer2000(天外流星)回复于 2002-03-19 10:33:49 得分 0

不可以用游标Top

11 楼boyqing(阿清)回复于 2002-03-19 10:39:22 得分 0

难道说程序执行得到返回值一定要首先在在存储过程里面输出声明吗?Top

12 楼chechy(www.qdocuments.net)回复于 2002-03-19 12:04:57 得分 0

用stroedProc1.Open来执行。Top

13 楼boyqing(阿清)回复于 2002-03-21 08:37:39 得分 0

对于大家回答非常感谢!  
  问题还是自己解决吧Top

相关问题

  • Delphi调用Sql server存储过程的问题--------急!!!!!!!!!!
  • 在SQl中写的存储过程,在delphi 中怎么调用
  • 用delphi调用存储过程
  • delphi 调用存储过程!!!急!!!
  • 关于delphi调用存储过程
  • Ado调用Sql server7.0存储过程
  • asp调用sql存储过程问题
  • 关于调用存储过程(SQL SERVER)
  • ※ Asp 中调用 Sql Server 存储过程 ※
  • odbc调用sql存储过程出错

关键词

  • 存储过程
  • 执行
  • sql
  • xmdh
  • jg
  • mzsf
  • xmjg123
  • 调用
  • 返回
  • asinteger

得分解答快速导航

  • 帖主:boyqing
  • chechy
  • liuziran
  • genphone_ru
  • humer
  • blackfiles

相关链接

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

广告也精彩

反馈

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