Sollte ich eine CSV-Zeichenfolge, eine XML-Zeichenfolge oder ... verwenden?Die beste Methode, um ein Array von Werten an eine gespeicherte Prozedur zu senden
Antwort
Welche Datenbank und Version? Mit SQL Server 2008 können Sie Tabellenwerteparameter verwenden. Auf 2005 nicht so viel.
Normalerweise verwende ich eine CSV-Zeichenfolge, so dass ich nicht über die maximale Länge für ein Varchar-Feld gehen. XML scheint zu diesem Zweck ziemlich wörtlich zu sein.
Es gibt spezielle API dafür ... In Java können Sie Anweisungen mit Objekten vorbereiten und die Datenbanktypen angeben, JDBC übernimmt die Konvertierungen. Dies ist sowieso ziemlich herstellerspezifisch. Ich würde nicht empfehlen, eine der vorgeschlagenen Techniken zu verwenden, weil sie den Typ der Argumente mit gefährlichen Nebenwirkungen "verstecken".
In den Jahren 2005/2000 mussten wir eine Xml-Zeichenkette erstellen und entweder mit dem Xml Parser (2005) parsen oder im Jahr 2000 einrollen. Nicht großartig, aber es hat den Job erledigt.
<ArrayOfGuid><Guid></Guid></ArrayOfGuid>
Es hängt wirklich davon ab, welche Datenbank Sie verwenden.
MS SQL 2005 führte den XML-Datentyp in die Microsoft-Plattform ein. Oracle9i brachte den XMLTYPE ein. MySql hat auch XML-Funktionen wie ExtractValue und UpdateXML. MS SQL 2008 verfügt über Tabellenwerte, mit denen Sie die Daten in einem Tabellenformat übergeben können.
Die Frage läuft wirklich darauf hinaus, wie Sie die Werte verwenden möchten. Zerrissen Sie sie auseinander, um sie in einer Tabelle zu speichern, oder möchten Sie den ganzen Blob speichern?
Wenn auseinander gerissen werden UND es gibt nur ein paar Werte, würde ich empfehlen, mit regulären String Parsing oder Tabelle Wert Parameter gehen. Ansonsten mach XML.
Bedenken Sie, dass SQL (unabhängig vom Geschmack) nicht wirklich auf das String-Parsing ausgerichtet ist. Sie können also eine Hilfsfunktion (CLR, UDF usw.) in der Datenbank erstellen, um sie für Sie zu verwenden, wenn Sie diese Route verwenden.
Immer, wenn ich ein Array an einen Sproc senden muss, mache ich einen Schritt zurück und überlege "warum?". Oft bin ich in der Lage, einige andere Kriterien an den Sproc zu senden, die es dem Sproc erlauben würden, die richtigen Ergebnisse zu generieren, ohne ein Array zu benötigen.
Es gibt Fälle, in denen ich das Array übergeben muss, und in diesen Fällen habe ich festgestellt, dass die Weitergabe von XML in mssql funktioniert.
- 1. Senden einer leeren Liste an gespeicherte Prozedur
- 2. Die beste Methode, um ein Array in C zu verschieben?
- 3. ASP.NET MVC: Die beste Methode, gespeicherte Prozedur aufzurufen
- 4. Übergeben Sie Array in eine gespeicherte Prozedur
- 5. Übergabe eines Arrays von IDs an eine gespeicherte Prozedur
- 6. Übergeben eines Arrays von Parametern an eine gespeicherte Prozedur
- 7. Gespeicherte Prozedur, die eine andere gespeicherte Prozedur ausführt
- 8. Beste Methode, um Daten von einem Server an ein Android-Gerät zu senden
- 9. Die beste Methode, um eine lange Base64-Zeichenfolge an den Server zu senden
- 10. ABSTEIGEND/ASCENDING Parameter an eine gespeicherte Prozedur
- 11. Wie übergeben Sie ein Array von Werten von Oracle Apex Page in Oracle gespeicherte Prozedur
- 12. Zum Übergeben von Massenzeilen von Daten an gespeicherte Prozedur
- 13. Übergeben von mehreren Parametern an gespeicherte Prozedur
- 14. Was ist der beste Weg, um eine gespeicherte Prozedur zu testen?
- 15. SQL gespeicherte Prozedur, um ein Benutzerobjekt zu erhalten und dann die Werte dieses Objekts zu aktualisieren
- 16. JavaScript: Algorithmus oder Methode, um ein Array von Objekten an eine DOM-Anzeige zu binden?
- 17. Die beste Methode, um eine KeyNotFoundException zu behandeln
- 18. Die beste Methode zum Senden eines Arrays von Schlüssel/Wert-Paaren an eine API in COM
- 19. Gespeicherte MemSQL-Prozedur
- 20. Zuweisen von Werten eines gespeicherten Prozedur Parameter eine andere gespeicherte Prozedur mit
- 21. Gespeicherte Prozedur zum dynamischen Aktualisieren von Werten in db2-Tabelle
- 22. Die beste Methode, um ein Element bei Änderungen zu delegieren?
- 23. Senden Sie gespeicherte Prozedur in AJAX-Daten
- 24. Übergeben Sie eine benutzerdefinierte Tabelle an eine gespeicherte Prozedur
- 25. Übergeben eines Arrays an eine gespeicherte SQL Server-Prozedur
- 26. Die beste Methode zum Senden von Informationen von einem clientseitigen Ruby-Skript an eine Rails-App?
- 27. Anrufdaten-spezifische gespeicherte Prozedur von Oracle-Prozedur
- 28. Die beste Methode, um eine Protokolldatei in GO zu rollen
- 29. Die beste Methode, um das Zurückverhalten von DialogFragment zu behandeln?
- 30. Gibt es eine sauberere oder elegantere Möglichkeit, mehrere Parameter über Entity Framework an die SQL-gespeicherte Prozedur zu übergeben? mehrere Parameter an eine gespeicherte Prozedur mit Entity Framework