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

简单存储过程问题,结束立即结帖!!

楼主comflyer0590(努力加三角!!)2005-07-15 17:47:36 在 MS-SQL Server / 基础类 提问

CREATE       procedure   search_accident  
                  @zqAddress   varchar,@zqLevel   varchar,@zqType   varchar,@zqTime1   datetime,@zqTime2   datetime  
  as  
  Declare   @strSQL   varchar  
  set   @strSQL   =   'select   *   from   BasicInfo   where   Num   >0'             //error!!!!!!!!!!!!!!!!!!!!!  
  if   (@zqType!=null)  
  set   @strSQL   =   @strSQL   +'   and   灾种   like   '+   '''%'+@zqType+'%'''  
  if   (@zqTime1!=null)  
  set   @strSQL   =   @strSQL   +   '   and   发生时间>'''+@zqTime1+''  
  if   (@zqTime2!=null)  
  set   @strSQL   =   @strSQL   +   '   and   发生时间<'''+@zqTime2+''  
  if   (@zqLevel!=null)  
  set   @strSQL   =   @strSQL   +'   and   事故等级   like   '+   '''%'+@zqLevel+'%'''  
  if   (@zqAddress!=null)                                                  
  set   @strSQL   =   @strSQL   +'   and   发生地点   like   '+   '''%'+@zqAddress+'%'''  
  exec(@strSQL)  
  GO  
   
   
  各位大哥   小弟初学sp,这个存储过程用于查询,为何调试的时候总是停在上面的错误行呢?   另,如果在程序里直接调用它,会返回查询结果吗?   不行该怎么写呢? 问题点数:50、回复次数:4Top

1 楼vivianfdlpw()回复于 2005-07-15 17:51:13 得分 30

Declare   @strSQL   varchar(2000)  
  set   @strSQL   =   'select   *   from   BasicInfo   where   Num   >0'             //error!!!!!!!!!!!!!!!!!!!!!  
  if   (@zqType   is   not   null)  
  set   @strSQL   =   @strSQL   +'   and   灾种   like   '+   '''%'+@zqType+'%'''  
  if   (@zqTime1   is   not   null)  
  set   @strSQL   =   @strSQL   +   '   and   发生时间>'''+@zqTime1+''  
  if   (@zqTime2   is   not   null)  
  set   @strSQL   =   @strSQL   +   '   and   发生时间<'''+@zqTime2+''  
  if   (@zqLevel   is   not   null)  
  set   @strSQL   =   @strSQL   +'   and   事故等级   like   '+   '''%'+@zqLevel+'%'''  
  if   (@zqAddress   is   not   null)                                                  
  set   @strSQL   =   @strSQL   +'   and   发生地点   like   '+   '''%'+@zqAddress+'%'''  
  exec(@strSQL)  
  Top

2 楼paoluo(一天到晚游泳的鱼)回复于 2005-07-15 17:52:42 得分 10

CREATE       procedure   search_accident  
                  @zqAddress   varchar(100),@zqLevel   varchar(100),@zqType   varchar(100),@zqTime1   datetime,@zqTime2   datetime  
  as  
  Declare   @strSQL   varchar(1000)  
  set   @strSQL   =   'select   *   from   BasicInfo   where   Num   >0   1=1'            
  if   (@zqType!=null)  
  set   @strSQL   =   @strSQL   +'   and   灾种   like   '+   '''%'+@zqType+'%'''  
  if   (@zqTime1!=null)  
  set   @strSQL   =   @strSQL   +   '   and   发生时间>'''+@zqTime1+''  
  if   (@zqTime2!=null)  
  set   @strSQL   =   @strSQL   +   '   and   发生时间<'''+@zqTime2+''  
  if   (@zqLevel!=null)  
  set   @strSQL   =   @strSQL   +'   and   事故等级   like   '+   '''%'+@zqLevel+'%'''  
  if   (@zqAddress!=null)                                                  
  set   @strSQL   =   @strSQL   +'   and   发生地点   like   '+   '''%'+@zqAddress+'%'''  
  exec(@strSQL)  
  GOTop

3 楼paoluo(一天到晚游泳的鱼)回复于 2005-07-15 17:54:01 得分 5

所有的varchar没有定义长度,会默认为1。  
   
  CREATE       procedure   search_accident  
                  @zqAddress   varchar(100),@zqLevel   varchar(100),@zqType   varchar(100),@zqTime1   datetime,@zqTime2   datetime  
  as  
  Declare   @strSQL   varchar(1000)  
  set   @strSQL   =   'select   *   from   BasicInfo   where   Num   >0'            
  if   (@zqType!=null)  
  set   @strSQL   =   @strSQL   +'   and   灾种   like   '+   '''%'+@zqType+'%'''  
  if   (@zqTime1!=null)  
  set   @strSQL   =   @strSQL   +   '   and   发生时间>'''+@zqTime1+''  
  if   (@zqTime2!=null)  
  set   @strSQL   =   @strSQL   +   '   and   发生时间<'''+@zqTime2+''  
  if   (@zqLevel!=null)  
  set   @strSQL   =   @strSQL   +'   and   事故等级   like   '+   '''%'+@zqLevel+'%'''  
  if   (@zqAddress!=null)                                                  
  set   @strSQL   =   @strSQL   +'   and   发生地点   like   '+   '''%'+@zqAddress+'%'''  
  exec(@strSQL)  
  GO  
  Top

4 楼zlp321002(Life Is Good,Let's Shine)回复于 2005-07-15 18:55:43 得分 5

--同意楼上Top

相关问题

  • 求一简单存储过程.在线等,马上结帖!!!!
  • 小弟处女帖~~求一简单tsql存储过程
  • 简单的存储过程!
  • 一简单存储过程
  • 简单存储过程
  • 问一个存储过程的简单问题,在线等,立即揭帖
  • 最简单的存储过程
  • 寻找简单的存储过程。
  • 一个最简单的存储过程
  • 存储过程的简单问题

关键词

  • null
  • zqtime
  • zqtype
  • strsql
  • 灾种
  • varchar
  • and发生时间
  • set

得分解答快速导航

  • 帖主:comflyer0590
  • vivianfdlpw
  • paoluo
  • paoluo
  • zlp321002

相关链接

  • SQL Server类图书

广告也精彩

反馈

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