我正在尝试使用以下语句从Excel中读取数据,该语句非常正常
Select * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;Database=d:\input.xls','select MyColum from [Sheet1$]')
XLS inpout.xls有两列ID和NAME。现在我希望上面的语句只返回ID = x的一个值/行,并将返回的值赋给局部变量,如下所示 -
DECLARE @dbValue varchar(20)
DECLARE @I int
SET @I = 1
Select @dbValue = (Select * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;Database=d:\input.xls','select MyColum from [Sheet1$] where [ID]=@I'))
这会返回错误
OLE DB提供程序" Microsoft.Jet.OLEDB.4.0"对于链接服务器"(null)"返回消息"没有给出一个或多个必需参数的值。"。
Msg 7320,Level 16,State 2,Line 3
无法执行查询"从[Sheet1 $]中选择MyColum,其中[ID] = @ I"针对OLE DB提供程序" Microsoft.Jet.OLEDB.4.0"对于链接服务器"(null)"。
请建议。
答案 0 :(得分:0)
也许这样的事情会起作用。但是你的问题很混乱,因为你对Excel文件的查询选择了MyColumn,但是你说该文件有列ID和NAME。
DECLARE @dbValue varchar(20)
DECLARE @I int
SET @I = 1
Select @dbValue = NAME FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;Database=d:\input.xls','select ID from [Sheet1$]') as T
WHERE ID=@I;