openrowset取得excel数据时,如何传递参数?高分求解

Oracle_zz 2008-09-20 04:45:00
各位高手,我的存储过程中用以下代码取到Excel中的数据:
create procedure [dbo].[导入EXCEL]
as
select * INTO #ttb1
FROM openrowset( 'Microsoft.Jet.OLEDB.4.0',
'EXCEL 8.0;HDR=YES;IMEX=1; DATABASE=f:\BOOK001.xls',Sheet1$)

后面我需要继续写存储过程使用临时表#ttb1的数据进行继续操作,但是我的DATABASE=f:\BOOK001.xls中的文件路径是程序中取到,EXCEL的Sheet1$这个名字也是程序中取到,需要传参,如何实现在以上语句,并且我能继续使用#ttb1? 另外我的程序语言用的是C#结合ASP.NET
...全文
201 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
domydream 2008-09-20
  • 打赏
  • 举报
回复
declare @se varchar(500),
@s varchar(20)
set @s='f:\BOOK001.xls'

set @se='EXCEL 8.0;HDR=YES;IMEX=1; DATABASE='+@s
exec('
select * INTO #ttb1
FROM openrowset(''Microsoft.Jet.OLEDB.4.0'','''+@se+''' ,Sheet1$)
因为用到了临时表
可以用exec('')包含整个Sql,以解决临时表生存期问题
-晴天 2008-09-20
  • 打赏
  • 举报
回复
要传参的话,用动态语句.
仔细写,意思对语法对就没问题了.
Oracle_zz 2008-09-20
  • 打赏
  • 举报
回复
另外4楼的大哥,您的语句好像在执行的时候有问题,您建立一个EXCEL实验下
Oracle_zz 2008-09-20
  • 打赏
  • 举报
回复
我用临时表是为了控制多用户访问的问题,或者单用户在不同地点用同样的帐号登录,我希望一个临时表被一个人独占使用
请问全局临时表可以被同时使用存储过程的用户独占使用吗?
偶初学,不是很清除,请各位赐教
hyqwan11112 2008-09-20
  • 打赏
  • 举报
回复

create procedure [dbo].[导入EXCEL]
@filename nvarchar(max),
@sheet nvarchar(200)
as
declare @sql nvarchar(max)
set @sql='select * INTO ##ttb1
FROM openrowset( ''Microsoft.Jet.OLEDB.4.0'',
''EXCEL 8.0;HDR=YES;IMEX=1; '''+@filename+''','+@sheet+')'
exec(@sql)
select * from ##ttb1
chenjunsheep 2008-09-20
  • 打赏
  • 举报
回复
全部都用字符串拼起来,再Exec一下就OK了
Oracle_zz 2008-09-20
  • 打赏
  • 举报
回复
我用的是动态表,取数据的时候不需要约束列名吧
假设我的参数
@path varchar(20),
@sheetname varchar(20)
分别是文件路径和ESCEL工作簿的名字,我这句存储过程如何修改呢?请各位详细写下
zheninchangjiang 2008-09-20
  • 打赏
  • 举报
回复
你得约束好excel列名,参数还是和普通的procedure参数一样使用

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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