2009-03-10 9 views

Antwort

2

Welche Datenbank und Version? Mit SQL Server 2008 können Sie Tabellenwerteparameter verwenden. Auf 2005 nicht so viel.

0

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.

0

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".

0

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> 
2

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.

0

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.

Verwandte Themen