日期:2014-05-18 浏览次数:20744 次
--加引号用quotename函数,这样不容易出错 declare @data int set @data=256 select QUOTENAME(@data,'''') --结果 /* '256' */
------解决方案--------------------
''代表一个'的转义就可以了 注意点就可以了。
------解决方案--------------------
动态的里面 两个相当于非动态的一个
1--2
2--4 这样的
------解决方案--------------------
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 */