日期:2014-05-18  浏览次数:20489 次

修改存储过程出错,可能是引号问题
修改存储过程出错信息如下:

消息 102,级别 15,状态 1,过程 jtxx,第 17 行
'+' 附近有语法错误。

我知道错误出在兰色文字处,如果我把@FileName去了,直接将文件名写在串中就没事
我的目的是让我的存储过程能接受一个文件名为参数,然后从这文件名代表的Excel表中插入数据到已有SQL表中

怎么办?

出错时执行的代码如下
alter PROCEDURE jtxx
@FileName char(100)
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;

  -- Insert statements for procedure here
truncate table SJ_DB_JTXX
select * from SJ_DB_JTXX
insert SJ_DB_JTXX 
SELECT [行政区划代码],
[家庭编号],
[类别],
[户主姓名],
[户主身份证号],
[低保证号],
[银行帐号],
[其他家庭成员姓名1],
[其他家庭成员身份证号1],
[其他家庭成员姓名2],
[其他家庭成员身份证号2],
[其他家庭成员姓名3],
[其他家庭成员身份证号3],
[其他家庭成员姓名4],
[其他家庭成员身份证号4],
[其他家庭成员姓名5],
[其他家庭成员身份证号5],
[其他家庭成员姓名6],
[其他家庭成员身份证号6],
[每户保障人口数],
[家庭月收入]
 FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="'+@FileName+'";User ID=Admin;Password=;Extended properties=Excel 5.0') ...[sheet1$]
END
GO



------解决方案--------------------
尽管它的参数不能为变量,但是整体都用字符串拼接是可以的 。

参考:
http://www.cnblogs.com/xiaofengfeng/archive/2011/03/29/1998539.html