Frage

Meine gespeicherte Prozedur wird wie unten aus einem SQL-instegartion Paket in SQL Server 2005 genannt

EXEC? = Validation.PopulateFaultsFileDetails? 0

Obwohl ich bin nicht sicher, was das? Mittel

War es hilfreich?

Lösung

Wenn diese SQL-Anweisung aufgerufen wird, beiden Fragezeichen (?) Werden ersetzt. Die erste wird durch eine Variable ersetzt werden, die den Rückgabewert der gespeicherten Prozedur erhalten. Die zweite wird durch einen Wert ersetzt werden, der in die gespeicherte Prozedur übergeben werden. Der Code, um diese Aussage zu verwenden, wird so etwas wie dieser (Pseudo-Code) aussehen:

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

Das gibt Ihnen 3 Vorteile:

  1. Sie können das gleiche Bit von SQL wiederverwenden mit unterschiedlichen Werten
  2. Sie können den Rückgabewert und Test für den Erfolg / Fehler
  3. abholen
  4. , wenn der Wert, den Sie passieren, werden in einer Zeichenfolge ist, sollte es richtig für Sie entkommen, um das Risiko von SQL-Injection-Schwachstellen in Ihrer Anwendung zu reduzieren.

Andere Tipps

? steht für variable, präzisen, ein Parameter zu sein. Der Erste ? ist der Rückgabewert der gespeicherten Prozedur und die zweite der erste Parameter der gespeicherten Prozedur ist

Danke Ich schätze die Antwort.

Ich konnte erfolgreich die gespeicherte Prozedur ausführen mit ERKLÄREN @FaultsFileName varchar ERKLÄREN @FaultsFileID int EXEC @FaultsFileID = Validation.PopulateFaultsFileDetails 'SameMonth Test.txt', @FaultsFileID SELECT @FaultsFileID

Aber wenn ich den Eingangsparameter als ‚SameMonth Test.txt‘ in dem Integrationspaket gebe ich einen Fehler, der sagt:

Parameternamen können nicht eine Mischung aus Ordnungs und benannte Typen sein. "Mögliche Fehlerursache. Probleme mit der Abfrage‚ ResultSet‘Eigenschaft nicht richtig eingestellt, Parameter nicht richtig eingestellt ist, oder nicht richtig hergestellte Verbindung

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top