2014-04-07 9 views
9

Voglio passare un parametro con valori di tabella come variabile a una stored procedure e nel costruttore della classe SqlMetadata è possibile specificare la lunghezza (lunghezza massima) della stringa che si desidera aggiungere nella colonna del tavolo.Impostazione della lunghezza nvarchar al massimo nei parametri di tabella

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

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

Come si può fare per specificare una lunghezza 'max' in modo che corrisponda a questa colonna

ValueOne (nvarchar(max), not null) 

rispetto a un valore di lunghezza di 100 per esempio

risposta

13

In this article on MSDN è specificato che puoi impostare la dimensione MAX in questo modo

SqlParameter myParam = new SqlParameter("@paramName", SqlDbType.NVarChar, SqlMetaData.Max); 

Vedere l'ultimo esempio sull'articolo sopra citato.
Così, senza sapere esattamente come la classe SqlMetaData è definita, e supponendo che l'ultimo parametro è la dimensione di un propery SqlParameter sottostante, penso che si potrebbe scrivere

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

Ho appena controllato che ora pure ... dovrebbe essere controllato prima di chiedere. Scuse – Arianule

+0

Non sono richieste scuse se non è stata presa alcuna offesa. Al contrario, la tua è una domanda interessante, ed è stato un modo prezioso per migliorare le mie conoscenze. – Steve

+2

BTW, puoi usare 'SqlMetaData.Max' invece di -1, che potrebbe essere leggermente più pulito. –

Problemi correlati