如何编写将查询输出转换为excel的过程。 [英] How to write the procedure to transform the query output into excel.

查看:100
本文介绍了如何编写将查询输出转换为excel的过程。的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在编写查询,但仍然没有得到它的错误...

I am writing query but still am not getting what is the error it is...

alter procedure	toinsert
  (    
   @year int,    
   @month int,    
   @filepath varchar(2000),    
   @machinename varchar(100),    
   @dbname varchar(100)    
  )
  as
  begin
  
  set @dbname = @dbname + '..'
  declare @nl char(2)
  set @nl = CHAR(13) + CHAR(10)
  
  DECLARE @TmpHdrFileName varchar(1000)
  set @TmpHdrFileName = @filepath+'usercount.txt'
  
  declare @hdrstring varchar(100)
  
  set @hdrstring='select 
  ''''EmpCode'''' as empcode,
  ''''fsname'''' as fsname,
  ''''ntype'''' as ntype,
  ''''desg'''' as desg,
  ''''userid'''' as userid,
  ''''dcr_count'''' as dcr_count'  
   
   set @hdrstring = 'EXEC master..xp_cmdshell ''bcp "' + @hdrstring + 
	
   '" queryout '+@TmpHdrFileName+' -S '+@machinename+' -T -c '''  
  
  set @hdrstring = replace(@hdrstring,@nl,' ')
  
  exec (@hdrstring)	
  
  declare @sql1 varchar(max)
  set @sql1='select f.C_EmpNo as EmpCode,f.C_Name as FSName,ua.N_Type as NType,
ua.c_sh_name as Desg,
ui.C_UserID as UserID,dwr.dcrcount as DCR_Count
from 
Tbl_FS_Mst f
'+@dbname+'join Tbl_User_Access ua on f.N_Type=ua.N_Type
'+@dbname+'join Tbl_User_Info ui on f.C_EmpNo=ui.C_Code
left join
(
	select c_fs_code,COUNT(distinct n_srno) as dcrcount
	from '+@dbname+'tbl_dwr d
	where MONTH(d_date_report)=@month and year(d_date_report)=@year
	group by c_fs_code
)dwr on dwr.C_FS_Code=f.C_Code
where f.C_EmpNo<>''''000000'''' or dwr.dcrcount is not null
--and  dwr.dcrcount=null
order by f.C_EmpNo,f.N_Type,f.C_Name
'

declare @TmpDataFileName varchar(1000)
set @TmpDataFileName = @filepath+'usercount.txt'
set @sql1 = 'exec master..xp_cmdshell ''bcp "' + @sql1 + '" queryout
'+@TmpDataFileName+' -S '+@machinename+' -T -c'''
set @sql1 = replace(@sql1,@nl,' ')
exec(@sql1)

declare @filename varchar(1000)
set @filename = @filepath +	'usercountfor_'+LEFT(DATENAME(MONTH,DATEADD(month,@month,-1)),3)+
convert(varchar,@year)+'_creaton_'+REPLACE(convert(varchar(10),GETDATE(),103),'/','-')+'.xls'
declare @mergedata	varchar(1000)
set @mergedata='master..xp_cmdshell ''copy '+@TmpHdrFileName+' + '+@TmpDataFileName +'
'+@filename+''''
exec(@mergedata)

declare @delfiles varchar(500)
set @delfiles='master..xp_cmdshell ''del '+@TmpDataFileName+''''
set @delfiles='master..xp_cmdshell ''del '+@TmpHdrFileName+''''
exec @delfiles
end





错误上午得分低于



消息105,等级15,状态1,行1

字符串'bcp之后的未闭合引号'选择' EmpCode'为empcode,'fsname'为fsname,'ntyp'。



(7行受影响)



(2行受影响)

消息7202,等级11,状态2,过程插入,第76行

无法找到服务器'master'在sys.servers中。验证是否指定了正确的服务器名称。如有必要,执行存储过程sp_addlinkedserver将服务器添加到sys.servers。



请告诉我,因为这对我来说非常紧急。



Error am getting is below

Msg 105, Level 15, State 1, Line 1
Unclosed quotation mark after the character string 'bcp "select 'EmpCode' as empcode, 'fsname' as fsname, 'ntyp'.

(7 row(s) affected)

(2 row(s) affected)
Msg 7202, Level 11, State 2, Procedure toinsert, Line 76
Could not find server 'master' in sys.servers. Verify that the correct server name was specified. If necessary, execute the stored procedure sp_addlinkedserver to add the server to sys.servers.

please tell me since it is very urgent for me.

推荐答案

首先请在您的SP中更正以下部分代码..您正在创建的文本部分不正确。你也可以参考下面的链接。



MSDN xp_cmdshell [< a href =https://msdn.microsoft.com/en-us/library/ms175046.aspxtarget =_ blanktitle =新窗口> ^ ]



First Please correct below part of code in your SP.. what text part you are creating is not correct. you can also refer below link for that.

MSDN xp_cmdshell[^]

set @hdrstring='select
''''EmpCode'''' as empcode,
''''fsname'''' as fsname,
''''ntype'''' as ntype,
''''desg'''' as desg,
''''userid'''' as userid,
''''dcr_count'''' as dcr_count'

 set @hdrstring = 'EXEC master..xp_cmdshell ''bcp "' + @hdrstring +

 '" queryout '+@TmpHdrFileName+' -S '+@machinename+' -T -c '''

set @hdrstring = replace(@hdrstring,@nl,' ')





取代master..xp_cmdshell,使用master.dbo.xp_cmdshell



Instead master..xp_cmdshell, use master.dbo.xp_cmdshell


这篇关于如何编写将查询输出转换为excel的过程。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆