CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  应用实例

万分火急!重谢!

楼主serversystem()2005-08-02 22:02:52 在 MS-SQL Server / 应用实例 提问

编写一个存储过程  
  对某个库中的a表中的某几列进行检索,条件1:是a表中的一个时间列取一个时间段(例如:2005-01-01<时间列<2005-05-01),条件2:是a表中的一个字符串列等于某个字符串(例如:字符串列=‘发动机’)  
  另外,在这一个存储过程中时间条件是不变,但有多个字符串的条件,例如:字符串=1,字符串=2,这样就需要有两个结果产生!  
  最后把检索结果以Execl形式存在硬盘里。  
   
  如果可以实现的话,必有重谢! 问题点数:100、回复次数:7Top

1 楼vivianfdlpw()回复于 2005-08-02 22:55:27 得分 0

 
  --创建测试环境  
  create   table   A(dt   datetime,str   varchar(20))  
  insert   A  
  select   getdate(),'AAA'   union  
  select   getdate(),'BBB'   union  
  select   getdate(),'CCC'   union  
  select   getdate(),'DDD'   union  
  select   getdate(),'EEE'   union  
  select   getdate(),'GGG'  
  go  
   
  --创建存储过程  
  if   exists(select   1   from   sysobjects   where   id=object_id('p')   and   xtype='P')  
  drop   procedure   p  
  go  
  create   procedure   p  
  @startDate   datetime,       --开始时间  
  @endDate   datetime,           --结束时间  
  @strlist   varchar(200),   --字符串列表,逗号分割  
  @filepath   varchar(100)   --输出文件路径  
  as  
  declare   @sql   varchar(5000)  
  set   @sql='select   *   from   test.dbo.A   where   dt   between   convert(datetime,'''+  
                    convert(varchar,@startDate)+''')   and   convert(datetime,'''+convert(varchar,@endDate)+''')   and   '+  
                    'charindex('',''+[str]+'','','','+@strlist+','')>0'  
  set   @sql='bcp   "'+@sql+'"   queryout   "'+@filepath+'"   -c   -T'  
  --print   @sql  
  exec   master..xp_cmdshell   @sql  
  go  
   
  --测试  
  exec   p   '1900-1-1','2005-8-3','AAA,CCC','c:\data.xls'  
   
  --删除测试环境  
  drop   table   A  
  drop   procedure   pTop

2 楼serversystem()回复于 2005-08-03 10:25:45 得分 0

哥们!给我你的帐号。  
  另外,我运行这个存储过程后,会在什么地方留下痕迹,如果有痕迹怎么可以把它删除掉。急!Top

3 楼serversystem()回复于 2005-08-03 10:53:24 得分 0

说实话,我对这个不太在行,但是又得应付考试,  
  这样吧,我把所有的条件都写上,请您帮我写一个吧,  
  数据库名为:sqldb       表名为:table     日期条件为:2005-01-01至2005-05-01  
  字符条件为:aaa,bbb,ccc,ddd,eee  
  将每一个字符条件存为一个文件,例如:aaa.xls     bbb.xls     ccc.xls       ddd.xls     eee.xls  
  请您写一个最后需要执行的存储过程,请详细一些,万分感激!  
  Top

4 楼vivianfdlpw()回复于 2005-08-03 11:06:22 得分 0

--创建存储过程  
  if   exists(select   1   from   sysobjects   where   id=object_id('p')   and   xtype='P')  
  drop   procedure   p  
  go  
  create   procedure   p  
  @startDate   datetime,       --开始时间  
  @endDate   datetime,           --结束时间  
  @strlist   varchar(200),   --字符串列表,逗号分割  
  @path   varchar(50)             --文件保存路径  
  as  
  declare   @sql   varchar(5000)  
  declare   @filepath   varchar(50)  
  while   charindex(',',@strlist)>0  
  begin  
  if   right(@path,1)<>'\'  
  set   @path=@path+'\'  
  set   @filepath=@path+left(@strlist,charindex(',',@strlist)-1)+'.xls'  
  set   @sql='select   *   from   sqldb.dbo.[table]   where   dt   between   convert(datetime,'''+  
                    convert(varchar,@startDate)+''')   and   convert(datetime,'''+convert(varchar,@endDate)+''')   and   '+  
                    'charindex('',''+[str]+'','','','+left(@strlist,charindex(',',@strlist)-1)+','')>0'  
  set   @sql='bcp   "'+@sql+'"   queryout   "'+@filepath+'"   -c   -T'  
  --print   @sql  
  exec   master..xp_cmdshell   @sql  
  set   @strlist=stuff(@strlist,1,charindex(',',@strlist),'')  
  end  
   
  set   @filepath=@path+@strlist+'.xls'  
  set   @sql='select   *   from   test.dbo.A   where   dt   between   convert(datetime,'''+  
                    convert(varchar,@startDate)+''')   and   convert(datetime,'''+convert(varchar,@endDate)+''')   and   '+  
                    'charindex('',''+[str]+'','','','+@strlist+','')>0'  
  set   @sql='bcp   "'+@sql+'"   queryout   "'+@filepath+'"   -c   -T'  
  exec   master..xp_cmdshell   @sql  
  go  
   
  --调用  
  exec   p   ‘2005-01-01','2005-05-01','aaa,bbb,ccc,ddd,eee','c:'Top

5 楼serversystem()回复于 2005-08-03 11:22:37 得分 0

也就是说我只要把条件填写在下面相应位置里即可是吗?  
   
  @startDate   datetime,       --2005-01-01  
  @endDate   datetime,           --2005-05-01  
  @strlist   varchar(200),   --aaa,bbb,ccc  
  @path   varchar(50)             --d:\aaa.xls,d:\bbb.xls,d:\ccc.xlsTop

6 楼serversystem()回复于 2005-08-03 11:24:34 得分 0

我运行这个存储过程后,会在什么地方留下痕迹,如果有痕迹怎么可以把它删除掉。Top

7 楼serversystem()回复于 2005-08-03 15:42:50 得分 0

我将这个在存储过程里执行,报错“在as关键字附近有语法错误”请指教!  
   
  if   exists(select   1   from   sysobjects   where   id=object_id('p')   and   xtype='P')  
  drop   procedure   p  
  go  
  create   procedure   p  
  @startDate   datetime,       --2005-01-01  
  @endDate   datetime,           --2005-03-01  
  @strlist   varchar(200),   --aaa,bbb,ccc,ddd,eee  
  @path   varchar(50),             --d:\aaa.xls,d:\bbb.xls,d:\ccc.xls,d:\ddd.xls,d:\eee.xls  
  as  
  declare   @sql   varchar(5000)  
  declare   @filepath   varchar(50)  
  while   charindex(',',@strlist)>0  
  begin  
  if   right(@path,1)<>'\'  
  set   @path=@path+'\'  
  set   @filepath=@path+left(@strlist,charindex(',',@strlist)-1)+'.xls'  
  set   @sql='select   *   from   a.dbo.[table]   where   dt   between   convert(datetime,'''+  
                    convert(varchar,@startDate)+''')   and   convert(datetime,'''+convert(varchar,@endDate)+''')   and   '+  
                    'charindex('',''+[str]+'','','','+left(@strlist,charindex(',',@strlist)-1)+','')>0'  
  set   @sql='bcp   "'+@sql+'"   queryout   "'+@filepath+'"   -c   -T'  
  --print   @sql  
  exec   master..xp_cmdshell   @sql  
  set   @strlist=stuff(@strlist,1,charindex(',',@strlist),'')  
  end  
   
  set   @filepath=@path+@strlist+'.xls'  
  set   @sql='select   *   from   test.dbo.A   where   dt   between   convert(datetime,'''+  
                    convert(varchar,@startDate)+''')   and   convert(datetime,'''+convert(varchar,@endDate)+''')   and   '+  
                    'charindex('',''+[str]+'','','','+@strlist+','')>0'  
  set   @sql='bcp   "'+@sql+'"   queryout   "'+@filepath+'"   -c   -T'  
  exec   master..xp_cmdshell   @sql  
  go  
   
  --调用  
  exec   p   ‘2005-01-01','2005-05-01','aaa,bbb,ccc,ddd,eee','c:'  
  Top

相关问题

  • 万分火急!!!!
  • 万分火急!!!!!1
  • 十万分火急,在线等,要快呀,谢谢了
  • 万分火急,请求帮助!先行谢过。
  • web下权限控制问题--十万火急,万分感谢
  • 急救,万分感谢!!
  • 急啊!万分感谢
  • 万分火急,请教访问数据库速度问题!多谢!!!
  • 很急,高手们帮帮忙,文件传输问题,万分火急,在线等待,先谢谢了
  • 系统瘫痪,万分火急

关键词

  • 存储过程
  • xp
  • strlist
  • xls
  • charindex
  • filepath
  • enddate
  • startdate
  • convert
  • ccc

得分解答快速导航

  • 帖主:serversystem

相关链接

  • SQL Server类图书

广告也精彩

反馈

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