导入Execl的一个存贮过程,请帮忙

bjzhaoxiao 2004-11-11 04:46:17
CREATE proc dbo.SP_ImportS
@vchFilePath varchar(255)
AS
set nocount on
declare @vchProviderStringTemp varchar(255)
declare @nTemp int
declare @vchProviderString varchar(255)
select @vchProviderStringTemp = 'Excel 5.0;HDR=YES;DATABASE= '

--select @nTemp = LEN(@vchProviderStringTemp)
--select @vchProviderString = stuff(@vchProviderStringTemp,@nTemp-1,1,@vchFilePath)
select @vchProviderString = @vchProviderStringTemp+@vchFilePath


drop table student1
GO
select * into Student1 from
OPENROWSET('MICROSOFT.JET.OLEDB.4.0',@vchProviderString,sheet1$)
--,'Excel 5.0;HDR=YES;DATABASE=c:\2002本科生数据.xls',sheet1$)

GO

dbo.sp_imports 'c:\2002本科生数据.xls'

ALTER TABLE student1 ADD password VARCHAR(20) default '1234'
GO

程序老是报:第 2 行: '@vchProviderString' 附近有语法错误。
请高手支着
...全文
142 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjcxc 元老 2004-11-11
  • 打赏
  • 举报
回复
SQL 2000查询分析器
--左连的对象浏览器(没有的话按F8)
--对象项中
--右键调试的存储过程
--调试
--输入参数(必须输入所有的参数,包括默认值/输出参数
--点击执行
--出现一个浮动工具条
--上面有单步执行,断点设置等

按F11是单步执行.

如果要运行到指定行,只需要将光标移动到指定的行,再按Ctrl+F10
bjzhaoxiao 2004-11-11
  • 打赏
  • 举报
回复
怎样单步调试sp?
zjcxc 元老 2004-11-11
  • 打赏
  • 举报
回复
--GO不是sql语句,所以不能写在存储过程中间

CREATE proc dbo.SP_ImportS
@vchFilePath varchar(255)
AS
set nocount on
declare @vchProviderStringTemp varchar(255)
declare @nTemp int
declare @vchProviderString varchar(255)
select @vchProviderStringTemp = 'Excel 5.0;HDR=YES;DATABASE= '

--select @nTemp = LEN(@vchProviderStringTemp)
--select @vchProviderString = stuff(@vchProviderStringTemp,@nTemp-1,1,@vchFilePath)
select @vchProviderString = @vchProviderStringTemp+@vchFilePath


drop table student1
exec('
select * into Student1 from
OPENROWSET(''MICROSOFT.JET.OLEDB.4.0'','''+@vchProviderString+''',sheet1$)
')
GO
zjcxc 元老 2004-11-11
  • 打赏
  • 举报
回复
谁让你加go呢?
bjzhaoxiao 2004-11-11
  • 打赏
  • 举报
回复
openrowset里面的参数不支持用变量,难道就没有别的办法了,有没有别的办法到入exce文件到数据库中?请高手出手
bjzhaoxiao 2004-11-11
  • 打赏
  • 举报
回复
谢谢zjcxc(邹建) ,我试了还是不成功

服务器: 消息 137,级别 15,状态 2,行 6
必须声明变量 '@vchProviderString'。
zjcxc 元老 2004-11-11
  • 打赏
  • 举报
回复
变量最好再定义大一点,否则文件名+目录太长的话,又会出错.
lsxaa 2004-11-11
  • 打赏
  • 举报
回复
对 openrowset里面的参数不支持用变量
zjcxc 元老 2004-11-11
  • 打赏
  • 举报
回复
--改成这样就行了.

exec('
select * into Student1 from
OPENROWSET(''MICROSOFT.JET.OLEDB.4.0'','''+@vchProviderString+''',sheet1$)
')
bjzhaoxiao 2004-11-11
  • 打赏
  • 举报
回复
谢谢davorsuker39(大狐狸) :我该过了,还报同样的错误
Andy__Huang 2004-11-11
  • 打赏
  • 举报
回复
你的變量定義不夠長

.........
declare @vchProviderStringTemp varchar(8000)
declare @nTemp int
declare @vchProviderString varchar(8000)
..........
zjcxc 元老 2004-11-11
  • 打赏
  • 举报
回复
select * into Student1 from
OPENROWSET('MICROSOFT.JET.OLEDB.4.0',@vchProviderString,sheet1$)

openrowset里面的参数不支持用变量
davorsuker39 2004-11-11
  • 打赏
  • 举报
回复
declare @vchProviderStringTemp varchar(8000)

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧