ALTER proc [dbo].[up_OMP2NUW]
as
begin
declare @sql varchar(500)
set @sql='bcp "select 记录标识=1,'+
's_appnumber 档案编号,'+
'所属机构=''商务公司'','+
'a.depotid 所属仓库编号,'+
'a.rackid 所属保管架编号,'+
'a.boxid 所属保管箱编号,'+
'(case b.boxstate when 4 then ''1'' else ''2'' end)档案类型,'+
'(case a.app_type when 0 then ''0'' else ''1'' end)档案类型2,'+
'状态=4,'+
'packagetime 归档时间'+
' from AppArchive.dbo.AppArch_App as a inner join AppArchive.dbo.AppArch_Box as b on a.boxid=b.boxid" queryout "c:\OMPNUW.ARCHIVE001S."+''datepart(year,getdate())''+".00.txt" -c -T';
exec master..xp_cmdshell @sql
end
我想得到c:\OMPNUW.ARCHIVE001S.20120306.00.txt这样的文件名 但是怎么拼queryout后面的字符串都不会运算datepart()都是把'datepart()'这几个字母放到文件名中
别和我说动态的里面 两个相当于非动态的一个,''代表一个'的转义 这个我懂 我试了所有拼接可能 我怀疑无论怎么拼接都得不到我要的c:\OMPNUW.ARCHIVE001S.20120306.00.txt这种格式
2 个解决方案
#1
ALTER proc [dbo].[up_OMP2NUW]
as
begin
declare @sql varchar(500)
set @sql='bcp "select 记录标识=1,'+
's_appnumber 档案编号,'+
'所属机构=''商务公司'','+
'a.depotid 所属仓库编号,'+
'a.rackid 所属保管架编号,'+
'a.boxid 所属保管箱编号,'+
'(case b.boxstate when 4 then ''1'' else ''2'' end)档案类型,'+
'(case a.app_type when 0 then ''0'' else ''1'' end)档案类型2,'+
'状态=4,'+
'packagetime 归档时间'+
' from AppArchive.dbo.AppArch_App as a
inner join AppArchive.dbo.AppArch_Box as b
on a.boxid=b.boxid" queryout "c:\OMPNUW.ARCHIVE001S."
+''datepart(year,getdate())''+".00.txt" -c -T';
print @sql
exec master..xp_cmdshell @sql
end
--打印出来的结果,楼主对着结果找错误的地方
/*
bcp "select 记录标识=1,s_appnumber 档案编号,所属机构='商务公司',a.depotid 所属仓库编号,a.rackid 所属保管架编号,a.boxid 所属保管箱编号,(case b.boxstate when 4 then '1' else '2' end)档案类型,(case a.app_type when 0 then '0' else '1' end)档案类型2,状态=4,packagetime 归档时间 from AppArchive.dbo.AppArch_App as a
inner join AppArchive.dbo.AppArch_Box as b
on a.boxid=b.boxid" queryout "c:\OMPNUW.ARCHIVE001S."
+'datepart(year,getdate())'+".00.txt" -c -T
*/
#2
最后问题解决了 查看我这个求助帖http://topic.csdn.net/u/20120703/10/e3c63243-00a6-40ac-af80-cfcf9c45dff5.html?667824282
#1
ALTER proc [dbo].[up_OMP2NUW]
as
begin
declare @sql varchar(500)
set @sql='bcp "select 记录标识=1,'+
's_appnumber 档案编号,'+
'所属机构=''商务公司'','+
'a.depotid 所属仓库编号,'+
'a.rackid 所属保管架编号,'+
'a.boxid 所属保管箱编号,'+
'(case b.boxstate when 4 then ''1'' else ''2'' end)档案类型,'+
'(case a.app_type when 0 then ''0'' else ''1'' end)档案类型2,'+
'状态=4,'+
'packagetime 归档时间'+
' from AppArchive.dbo.AppArch_App as a
inner join AppArchive.dbo.AppArch_Box as b
on a.boxid=b.boxid" queryout "c:\OMPNUW.ARCHIVE001S."
+''datepart(year,getdate())''+".00.txt" -c -T';
print @sql
exec master..xp_cmdshell @sql
end
--打印出来的结果,楼主对着结果找错误的地方
/*
bcp "select 记录标识=1,s_appnumber 档案编号,所属机构='商务公司',a.depotid 所属仓库编号,a.rackid 所属保管架编号,a.boxid 所属保管箱编号,(case b.boxstate when 4 then '1' else '2' end)档案类型,(case a.app_type when 0 then '0' else '1' end)档案类型2,状态=4,packagetime 归档时间 from AppArchive.dbo.AppArch_App as a
inner join AppArchive.dbo.AppArch_Box as b
on a.boxid=b.boxid" queryout "c:\OMPNUW.ARCHIVE001S."
+'datepart(year,getdate())'+".00.txt" -c -T
*/
#2
最后问题解决了 查看我这个求助帖http://topic.csdn.net/u/20120703/10/e3c63243-00a6-40ac-af80-cfcf9c45dff5.html?667824282