万分火急!重谢!

serversystem 2005-08-02 10:02:52
编写一个存储过程
对某个库中的a表中的某几列进行检索,条件1:是a表中的一个时间列取一个时间段(例如:2005-01-01<时间列<2005-05-01),条件2:是a表中的一个字符串列等于某个字符串(例如:字符串列=‘发动机’)
另外,在这一个存储过程中时间条件是不变,但有多个字符串的条件,例如:字符串=1,字符串=2,这样就需要有两个结果产生!
最后把检索结果以Execl形式存在硬盘里。

如果可以实现的话,必有重谢!
...全文
101 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
serversystem 2005-08-03
  • 打赏
  • 举报
回复
我运行这个存储过程后,会在什么地方留下痕迹,如果有痕迹怎么可以把它删除掉。
serversystem 2005-08-03
  • 打赏
  • 举报
回复
也就是说我只要把条件填写在下面相应位置里即可是吗?

@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.xls
vivianfdlpw 2005-08-03
  • 打赏
  • 举报
回复
--创建存储过程
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:'
serversystem 2005-08-03
  • 打赏
  • 举报
回复
说实话,我对这个不太在行,但是又得应付考试,
这样吧,我把所有的条件都写上,请您帮我写一个吧,
数据库名为:sqldb 表名为:table 日期条件为:2005-01-01至2005-05-01
字符条件为:aaa,bbb,ccc,ddd,eee
将每一个字符条件存为一个文件,例如:aaa.xls bbb.xls ccc.xls ddd.xls eee.xls
请您写一个最后需要执行的存储过程,请详细一些,万分感激!
serversystem 2005-08-03
  • 打赏
  • 举报
回复
哥们!给我你的帐号。
另外,我运行这个存储过程后,会在什么地方留下痕迹,如果有痕迹怎么可以把它删除掉。急!
serversystem 2005-08-03
  • 打赏
  • 举报
回复
我将这个在存储过程里执行,报错“在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:'
vivianfdlpw 2005-08-02
  • 打赏
  • 举报
回复

--创建测试环境
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 p

27,580

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧