2010-07-01 7 views
0

Je travaille avec Microsoft Access (pas SQL Server) et ai écrit une procédure stockée (Requête) comme indiqué ci-dessous dans SQL.Procédure stockée SQL où la base de données à interroger est le paramètre

Cette procédure fonctionne mais elle repose sur un chemin codé en dur dans la base de données à partir duquel tirer (SELECT) les données.

Pour rendre la requête plus utile, je veux passer la base de données à SELECT en tant que paramètre de la requête - comment cela se fait-il?

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

I.e. Je veux remplacer la ligne

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

avec quelque chose comme ça

FROM tblBatteries IN @DB 

Je suis en train de tester les procédures soit en cliquant sur les dans Access ou en les appelant à partir d'un module VB.

Lorsque je suis satisfait qu'ils travaillent, je vais les appeler comme requis de l'application principale qui sera construite en utilisant C#.

Merci d'avance.

+0

Avez-vous essayé si cela a fonctionné? On dirait que ça devrait marcher, le chemin est une chaîne et la plupart des chaînes peuvent facilement être remplacées par une variable. – Gertjan

+0

si vous utilisez l'environnement VB dans MS Access pour créer le SP vérifier si cela aide> http://support.microsoft.com/?kbid=202116 – potatopeelings

+1

"Je travaille avec Microsoft Access et SQL et ..." - - Travaillez-vous avec SQL Server? Au moins une réponse à ce jour pense que vous êtes. Je suis conscient que le moteur de base de données Access prend en charge la syntaxe 'CREATE PROCEDURE' en mode de requête ANSI-92, mais beaucoup de gens prennent des exceptions lorsque vous appelez l'objet de base de données résultant une 'procédure stockée'. Peu importe, je suis presque sûr que le chemin d'accès au fichier .mdb ne peut pas être paramétré dans SQL Access Database Engine. – onedaywhen

Répondre

0

Vous devez déclarer la variable en haut de votre proc stocké

DECLARE @DB AS string 

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

Merci J'ai juste essayé cela et j'obtiens une erreur de syntaxe SQL "invalid sql statement expected" delete '' insertion '' procedure '' select 'ou' update '" – Kildareflare

+0

Vous devez mettre cette INSIDE dans une procédure stockée .... alors appelle le. –

Questions connexes