2013-10-18 49 views
1

任何人都可以告诉我我在这里做错了什么?我试图基于我操纵的数据来查询到一个平面文件。我不断收到下面的代码错误。 感谢您的帮助!我不断收到bcp错误

任何人都可以告诉我我在做什么错在这里?我试图基于我操纵的数据来查询到一个平面文件。我不断收到下面的代码错误。 感谢您的帮助!

declare variables.... 

    select @effDate = effective_date from c_flt_src 

    if convert(varchar(10), @effDate, 112) = convert (varchar(10), GETDATE(),112) 
     set @sqleffdate = convert(varchar(10), @effDate, 112) 
     begin 
      select @all = store from c_flt_src where store = 'ALL' 

       if @@ROWCOUNT = 1 and @all = 'ALL' 
        select @action = action from c_flt_src 
         if @action = 'INCREASE' or @action = 'DECREASE' 
          set @actiontyp = 'UPDATE_STORE' 
         else if @action = 'REPLACE' 
          set @actiontyp = 'RESET_STORE' 


        select @a = a_amt from c_flt_src 
        select @b = b_amt from c_flt_src 

        begin 
         declare @c as cursor 
         set @c = CURSOR fast_forward for select distinct top 3 store from store_loc where store <> 0 order by store 
          open @c 
           fetch next from @c into @store 
            while @@FETCH_STATUS = 0 
             begin 
              --process data here 
              set @sql = @sqlaction + '|' + @actiontyp + '|' + @store + '|' + @a + '|' + @b 
              set @sql1 = '"'+'D:\file.'[email protected]+'.9999999.'+REPLICATE ('0', 3-LEN(@store)) + @store +'.deltaloc' + '"' 
              select @sql1 
              declare @s varchar(max) 
              set @s = ''''+'bcp "select ''''' + @sql + '''''"' + ' queryout ' + @sql1+ ' -c -t "|" -T'+'''' 
              select @s 
              execute master.dbo.xp_cmdshell @s 

            fetch next from @c into @store 
             end 
          close @c 
          deallocate @c 

        end 


     end 
+0

你在哪一行得到错误? – hallie

+1

什么是错误????? – valex

+0

执行bcp时出错。错误是“程序需要'varchar''类型的参数'command_String'。我不明白为什么我得到这个,因为我把参数放到一个varchar变量(@s) – user2885241

回答

0

尝试更换的@s申报varchar(4000)varchar(8000)varchar(max)

declare @s varchar(4000) 

xp_cmdshell (Transact-SQL)

command_string

是在海峡包含一个命令将传递到操作 系统。 command_string是varchar(8000)或nvarchar(4000),没有 默认值。

+0

这实际上工作!我宣布它到2000年,我的脚本完美地工作!感谢您的帮助! – user2885241