2014-04-07 10 views
9

Ich möchte einen Tabelle-Wert-Parameter als Variable an eine gespeicherte Prozedur übergeben und im Konstruktor der Klasse SqlMetadata kann die Länge (long maxLength) der Zeichenfolge angeben, die Sie hinzufügen möchten in der Spalte der Tabelle.Nvarchar-Länge auf Maximum in Tabellenwert-Parametern setzen

Microsoft.SqlServer.Server.SqlMetaData[] tvpdefinition = 
     { 

      new SqlMetaData("ValueOne", SqlDbType.NVarChar, 100), 
      new SqlMetaData("ValueTwo",SqlDbType.NVarChar, 100) 
     } 

Wie man über die Angabe einer ‚max‘ Länge gehen kann, so dass es mit dieser Spalte entspricht

ValueOne (nvarchar(max), not null) 

wie zum Beispiel auf einen Längenwert von 100 gegen

Antwort

13

In this article on MSDN es angegeben ist dass Sie die MAX-Größe auf diese Weise festlegen können

Siehe die letzte Beispiel zu dem oben genannten Artikel.
Also, ohne genau zu wissen, wie Sie Ihre SqlMetaData Klasse definiert ist, und unter der Annahme, dass der letzte Parameter die Größe propery eines zugrunde liegenden SqlParameter ist, ich glaube, Sie

Microsoft.SqlServer.Server.SqlMetaData[] tvpdefinition = 
{ 
    new SqlMetaData("ValueOne", SqlDbType.NVarChar, SqlMetaData.Max), 
    .... 
} 
+1

schreiben konnte ich überprüft nur, dass jetzt auch ... hätte vor der Nachfrage nachsehen sollen. Entschuldigungen – Arianule

+0

Entschuldigung ist nicht erforderlich, wenn keine Straftat begangen wurde. Im Gegenteil, es ist eine interessante Frage, und es war ein wertvoller Weg, mein Wissen zu verbessern. – Steve

+2

BTW, Sie können 'SqlMetaData.Max' anstelle von -1 verwenden, die etwas sauberer aussehen könnte. –