2009-02-27 9 views
17

Co SqlDbType odwzorowuje do varChar (max)? SqlDbType.VarChar mówi, że jest ograniczony do 8K, chociaż może to być błąd dokumentacji.Co SqlDbType jest mapowane na varChar (max)?

+0

Obecnie widzę 3 różne odpowiedzi, z którego rozwiązania faktycznie korzystałeś? – edosoft

+0

W końcu stwierdziłem, że nie jest jawnie ustawienie SqlDbType było najlepszym sposobem, aby przejść. Jest znacznie mniej podatny na błędy i nie musi być zmieniany, gdy przechowywany proc jest zmieniony. –

+2

Ale teraz twój kod buduje plan wykonania za każdym razem, gdy inny ciąg znaków jest przekazywany do SP. To nie jest optymalne. MSDN pokazuje, aby używać -1, jak stany eglasa poniżej. – HardCode

Odpowiedz

24

W rzeczywistości można go używać z VarChar. Jeśli jest to parametr można zbudować go z: nowym SqlParameter ("@ myparam" SqlDbType.NVarChar, -1)

Patrz: http://msdn.microsoft.com/en-us/library/bb399384.aspx

+1

Czy muszę podać rozmiar -1 lub czy mogę go zostawić pusty? –

+1

powiązane pytanie http://stackoverflow.com/questions/973260/what-size-do-you-for-for-varmarmax-in-your-parameter-declaration – TheEmirOfGroofunkistan

-1

Zastosowanie VarChar i ustawić wielkość do 2147483647 (2GB-1)

-1

OK ... W końcu doszedłem do tego ... jeśli pojawi się komunikat o błędzie: " Ciąg [0]: właściwość Size ma nieprawidłowy rozmiar 0." Trzeba tylko ustawić parametr rozmiaru wyjścia SQL parametr jako tak:

Dim parameter As SqlParameter = New SqlParameter("@FinalImportCount", SqlDbType.NVarChar) 
parameter.Direction = ParameterDirection.Output 
parameter.Size = 4000 
cmd.Parameters.Add(parameter) 

nadzieję, że pomoże ktoś - próbuje dowiedzieć się tego w ciągu 2 godzin .... Grrrrr.

Powiązane problemy