2008-09-12 8 views
7

Lorsque vous essayez d'entrer dans une requête SQL avec des paramètres à l'aide du fournisseur OLE DB Oracle je reçois l'erreur suivante:Comment résoudre les problèmes de mappage des paramètres de requête SQL lors de l'utilisation du fournisseur Oracle OLE DB?

Parameters cannot be extracted from the SQL command. The provider might not help to parse parameter information from the command. In that case, use the "SQL command from variable" access mode, in which the entire SQL command is stored in a variable.
ADDITIONAL INFORMATION:
Provider cannot derive parameter information and SetParameterInfo has not been called. (Microsoft OLE DB Provider for Oracle)

J'ai essayé la suite de la suggestion, mais ne comprends pas tout à fait ce qui est nécessaire: Parameterized queries against Oracle

Des idées?

Répondre

17

Pour développer sur le lien dans la question:

  1. Créer un package de variable
  2. Double-cliquez sur le nom de la variable de package. (Cela vous permet d'accéder aux propriétés de la variable)
  3. Définissez la propriété 'EvaluateAsExpression' sur true
  4. Entrez la requête dans le générateur d'expression.
  5. Définissez la requête source OLE DB commande SQL à partir variable

Le générateur d'expression peut créer dynamiquement des expressions en utilisant la variable pour créer 'parametised requêtes.
Ainsi, la requête suivante « normale »:

select * from book where book.BOOK_ID = ? 

peut être écrit dans le générateur d'expression:

"select * from book where book.BOOK_ID = " + @[User::BookID] 

Vous pouvez alors faire une manipulation nulle et la conversion des données en utilisant le générateur d'expression.

+0

Si vous utilisez une variable de chaîne, vous devez l'entourer de guillemets simples " " select * du livre où book.BOOK_AUTHOR = '"+ @ [User :: AuthorName] +"' " – WiredIn

Questions connexes