SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
create procedure [dbo].[importDATA]
@filepath nvarchar(8)
as
begin
DECLARE @sql nvarchar(4000)
set @sql='
BULK INSERT Sales.dbo.test4 
FROM '+@fileName +'
WITH (FIELDTERMINATOR ='','', ROWTERMINATOR= ''\n'');'
 end 
EXECUTE sp_executesql @sql
就是上面这个,@filepath是一个文本文档的路径,我的程序会获取目录里面的文本,
之后利用这个存储过程把数据都导入进去。现在这个语句冒失没问题,但是执行的时候提示
“:消息 102,级别 15,状态 1,第 3 行
'd:' 附近有语法错误。
消息 319,级别 15,状态 1,第 4 行
关键字 'with' 附近有语法错误。如果此语句是公用表表达式、xmlnamespaces 子句或者更改跟踪上下文子句,那么前一个语句必须以分号结尾。你看我确实是加了分号的

解决方案 »

  1.   

    FROM '''+@fileName +'''忘记拼接单引号了
      

  2.   

    先print出来看看能不能执行再exec嘛
      

  3.   

    楼上三位大侠,谢了半路出家不容易,多亏CSDN众兄弟。
    set @sql='
    BULK INSERT Sales.dbo.test4 FROM '''+@fileName +''' WITH (FIELDTERMINATOR ='''+','+''', ROWTERMINATOR= '''+'\n'+''')';
     end 
    print @sql就是这样就好了碰到逗号单独处理就好了。 print 果断犀利哈