forforever
begin
DECLARE @shenfenzheng VARCHAR(20)
declare @file_path varchar(200);--导出EXCEl文件的路径;
declare @file_name varchar(200);--导出EXCEl的文件名;
declare @exec_sql  varchar(8000);--SQL语句;
declare @exec_sql2 varchar(8000);--SQL语句;

set @file_path = \'C:\123\\'

DECLARE order_cursor CURSOR 
FOR SELECT cardnum FROM mdjhz.dbo.dealngUser
OPEN order_cursor
fetch next from order_cursor into @shenfenzheng
while @@fetch_status<>-1
IF ISNULL(@shenfenzheng,\'\')<>\'\'
begin
set @file_name = @shenfenzheng+\'.xls\'
set @exec_sql = \'select CONVERT(varchar(10),V.Vouchdate,120) \'\'日期\'\',D.dealuserName \'\'客户\'\',\'\'\'\'\'\'\'\'+D.cardnum \'\'身份证号\'\',D.address,D.jyxm,(select username from mdzjhz.dbo.tbuser2 u2 where u2.userlogo2=v.dealingcharacterid) \'\'组织机构\'\',(select VouchTypename from mdzjhz.dbo.VouchType where VouchTypeID=V.VouchTypeID) as \'\'单证类型\'\',(select operationname from mdzjhz.dbo.operationtype where operationlogo=v.operationid) \'\'业务明细\'\' ,V.principal \'\'金额\'\',(select statename from mdzjhz.dbo.Vouchstate where state=V.state) as \'\'状态\'\' , V.creditVouchID \'\'单证编号\'\',V.creditoperationID \'\'业务编码\'\',\'\'\'\'\'\'\'\'+V.bankAccount \'\'卡号\'\' from mdzjhz.dbo.creditVouch V,mdzjhz.dbo.dealingUser D where V.dealinglogo=D.dealuserlogo and V.state <>0 and ((V.VouchDate >=\'\'\'\' or \'\'\'\'=\'\'\'\') and (V.VouchDate <\'\'\'\' or \'\'\'\'=\'\'\'\')) and V.creditVouchID like \'\'%%\'\' and V.creditoperationID LIKE \'\'%%\'\'  and ((select statename from mdzjhz.dbo.Vouchstate where state=V.state) = \'\'--显示全部--\'\' or \'\'--显示全部--\'\'=\'\'--显示全部--\'\')    and ((select VouchTypename from mdzjhz.dbo.VouchType where VouchTypeID=V.VouchTypeID) = \'\'--显示全部--\'\' or \'\'--显示全部--\'\'=\'\'--显示全部--\'\') and ((select operationname from mdzjhz.dbo.operationtype where operationlogo=v.operationid)= \'\'--显示全部--\'\' or \'\'--显示全部--\'\'=\'\'--显示全部--\'\') and (D.cardnum like \'\'\'+@shenfenzheng+\'\'\') and ((select officename from mdzjhz.dbo.office where officelogo=V.officelogo)=\'\'--显示全部--\'\' or \'\'--显示全部--\'\'=\'\'--显示全部--\'\')  and isnull((select username from mdzjhz.dbo.tbuser2 u2 where u2.userlogo2=v.dealingcharacterid),\'\'\'\') like \'\'%%\'\'  order by V.VouchDate\'
set @exec_sql2 = \' bcp "\'+@exec_sql+\'" queryout "\'+@file_path+\'\'+@file_name+\'" -c -T -S "PC-2020030906\DDD" -U "sa" -P "123456"\';
exec master..xp_cmdshell @exec_sql2
---waitfor time \'0:0:1\'
fetch next from order_cursor into @shenfenzheng
---waitfor delay \'0:0:0.5\'
end
else
begin
fetch next from order_cursor into @shenfenzheng
end
close order_cursor
deallocate order_cursor
end
go

总结:

1、因为C盘为固态硬盘,写入速度应该快,其实经过测试并没发现快。写入c盘的话,需要把赋予everyone的文件夹写权限。

2、cardnum查询出来的身份证号码有40000+,写excel时,到了900多条ssms就卡死了。不知道啥原因。

3、第一次用存储过程,sql语句必须用单引号包含起来,语句中的原有单引号,需要使用两个单引号替换(不是双引号)。

分类:

技术点:

相关文章: