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

这样一个查询过程,为何传入参数时返回值为空呢?

楼主bee6803(欢笑人生)2006-07-02 18:02:01 在 MS-SQL Server / 应用实例 提问

if   exists   (select   *   from   dbo.sysobjects   where   id   =   object_id(N'[dbo].[sp_manager]')   and   OBJECTPROPERTY(id,   N'IsProcedure')   =   1)  
  drop   procedure   [dbo].[sp_manager]  
  GO  
  CREATE   proc   sp_manager  
  (   @kdh   varchar(10)='',  
    @StartDatetime         smalldatetime,  
    @EndDatetime         smalldatetime,  
      @id         varchar(20)='',  
      @pm     varchar(150)='',  
      @djh         varchar(14)=''  
  )  
  as    
      declare   @sql   varchar(6000),@kdh2   varchar(10),@id2   varchar(20),@cfh   int,@sl   int  
      delete   from   T_CILENTINVOICEINANDOUT      
      set   @sql='insert   into   T_CILENTINVOICEINANDOUT   (kdh,id,pm,cfh,shsl)     select   a.kdh,b.id,c.pm,b.cfh,sum(b.sl)   as   sl   '  
      set   @sql=@sql   +   '     from   t_khdd   a,t_khddd   b,t_modul   c   where   a.djh=b.djh   and   b.id=c.id       and   (   xdrq   between   '''+cast(@startdatetime   as   varchar)   +'''   and   '''+cast(@enddatetime   as   varchar)   +'''   )'  
      if   @kdh<>''    
              set   @sql=@sql   +   '     and   a.kdh   like   ''%'+ltrim(@kdh)+'''%'  
      if   @id<>''    
                set   @sql=@sql+   '     and   b.id   like   ''%'+ltrim(@id)+'''%'  
      if   @pm<>''  
                set   @sql=@sql+   '     and   c.pm   like   ''%'+ltrim(@pm)+'''%'  
      if   @djh<>''  
                set   @sql=@sql+   '     and   a.djh   like   ''%'+ltrim(@djh)+'''%'  
        set   @sql=@sql   +'     group   by   a.kdh,b.id,c.pm,cfh   '  
  --   print   @sql  
        exec   (@sql)  
   
  如果所有参数为空(日期除外),那么返回值不会为空。然而一旦传入参数,比如参数@kdh   为1的时候,为何返回值就为空呢? 问题点数:20、回复次数:3Top

1 楼LouisXIV(夜游神)回复于 2006-07-02 18:10:49 得分 20

把if的地方改成下面这样试试看  
   
      if   @kdh<>''    
              set   @sql=@sql   +   '     and   a.kdh   like   ''%'+ltrim(@kdh)+'%'''  
      if   @id<>''    
                set   @sql=@sql+   '     and   b.id   like   ''%'+ltrim(@id)+'%'''  
      if   @pm<>''  
                set   @sql=@sql+   '     and   c.pm   like   ''%'+ltrim(@pm)+'%'''  
      if   @djh<>''  
                set   @sql=@sql+   '     and   a.djh   like   ''%'+ltrim(@djh)+'%'''Top

2 楼bee6803(欢笑人生)回复于 2006-07-02 18:10:55 得分 0

解决了,语法错误Top

3 楼bee6803(欢笑人生)回复于 2006-07-02 18:11:25 得分 0

正如上面所说,把符号搞错了。谢谢  
  Top

相关问题

关键词

得分解答快速导航

  • 帖主:bee6803
  • LouisXIV

相关链接

  • SQL Server类图书

广告也精彩

反馈

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