使用局部variables比较在SQL Server中读取的Excel中的数据

我正在尝试使用以下语句读取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,并将返回值分配给本地variables,如下所示 –

 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)”返回消息“没有给出一个或多个必需参数的值”。
消息7320,级别16,状态2,线路3
对于链接服务器“(null)”,对于OLE DB提供程序“Microsoft.Jet.OLEDB.4.0”,无法执行查询“从[Sheet1 $]selectMyColum,其中[ID] = @ I”。

请build议。

也许这样的事情会起作用。 但是你的问题很混乱,因为你在Excel文件上的查询selectMyColumn,但是你说这个文件有列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;