Question

Ma procédure stockée est appelée comme ci-dessous à partir d'un package d'installation SQL dans SQL Server 2005

EXEC? = Validation.PopulateFaultsFileDetails? , 0

Bien que je ne sois pas sûr de quoi? signifie

Était-ce utile?

La solution

Lorsque cette requête SQL est appelée, les deux points d'interrogation (?) seront remplacés. Le premier sera remplacé par une variable qui recevra la valeur de retour de la procédure stockée. La seconde sera remplacée par une valeur qui sera transmise à la procédure stockée. Le code à utiliser cette instruction ressemblera à quelque chose comme ceci (pseudocode):

dim result
SQL = "EXEC ? = Validation.PopulateFaultsFileDetails ? , 0"
SQL.execute(result, 99)    // pass in 99 to the stored proc
debug.print result

Cela vous donne 3 avantages:

  1. vous pouvez réutiliser le même bit de SQL avec des valeurs différentes
  2. vous pouvez récupérer la valeur de retour et tester le succès / l'erreur
  3. si la valeur que vous transmettez est une chaîne, elle doit être correctement échappée, ce qui réduit le risque de vulnérabilités d'injection SQL dans votre application.

Autres conseils

Le? représente variable, pour être précis, un paramètre. La première ? est la valeur de retour de la procédure stockée et le second est le premier paramètre de la procédure stockée

Merci, j'apprécie la réponse.

J'ai réussi à exécuter la procédure stockée à l'aide de DECLARE @FaultsFileName varchar DECLARE @FaultsFileID int EXEC @FaultsFileID = Validation.PopulateFaultsFileDetails 'SameMonth Test.txt', @FaultsFileID SELECT @FaultsFileID

Mais lorsque je passe le paramètre d'entrée en tant que "SameMonth Test.txt" dans le package d'intégration, un message d'erreur indiquant:

Les noms de paramètre ne peuvent pas être un mélange de types ordinaux et nommés. ". Causes d'échec possibles: problèmes liés à la requête, " ResultSet " propriété non définie correctement, paramètres non définis correctement ou connexion non établie correctement.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top