2010-07-01 36 views
0

我正在使用Microsoft Access(而不是SQL Server),并且已经编写了一个存储过程(Query),如下面的SQL所示。SQL存储过程,其中要查询的数据库是参数

此过程可行,但它依赖于从中拉出(SELECT)数据的数据库的硬编码路径。

为了使查询更有用我想将数据库作为参数传递给查询 - 如何做到这一点?

INSERT INTO Part_Batteries (ItemCode, Size, Voltage) 
SELECT tblBatteries.ItemCode, tblBatteries.SizeAH, tblBatteries.Voltage 
FROM tblBatteries IN 'C:\Databases\DeviceDatabases\UKDevices.mdb'; 

I.e.我想要的东西来代替行

FROM tblBatteries IN 'C:\Databases\DeviceDatabases\UKDevices.mdb'; 

这样

FROM tblBatteries IN @DB 

目前,我在访问他们,可以按一下测试程序或通过从VB模块调用它们。

当我满意他们的工作时,我会根据需要从将使用C#构建的主应用程序调用它们。

在此先感谢。

+0

你试过顶部声明变量是否奏效?看起来它应该工作,路径是一个字符串,大多数字符串可以很容易地被变量替换。 – Gertjan 2010-07-01 10:45:13

+0

如果您使用MS Access中的VB环境创建SP检查,是否有帮助> http://support.microsoft.com/?kbid=202116 – potatopeelings 2010-07-01 10:50:44

+1

“我正在使用Microsoft Access和SQL,并且...” - 你在使用SQL Server吗?目前至少有一个答案认为你是。我知道在ANSI-92查询模式下Access数据库引擎支持'CREATE PROCEDURE'语法,但是当你将结果数据库对象称为'存储过程'时,许多人会发生异常。无论如何,我几乎可以肯定的是.mdb文件的路径不能在Access数据库引擎SQL中参数化。 – onedaywhen 2010-07-01 11:13:44

回答

0

您需要在您的存储过程的

DECLARE @DB AS string 

INSERT INTO Part_Batteries (ItemCode, Size, Voltage) 
SELECT tblBatteries.ItemCode, tblBatteries.SizeAH, tblBatteries.Voltage 
FROM tblBatteries IN @DB; 
+0

谢谢。刚刚试过,我得到一个SQL语法错误“无效的SQL语句预计'删除''插入''过程''选择'或'更新'” – Kildareflare 2010-07-01 11:09:32

+0

你应该把这个INSIDE存储过程....然后调用它。 – 2010-07-01 11:15:16