Son zamanlarda bir uygulamayı SQL Server'a taşıyarak bir sorunla karşılaştım. Bu sorunun bir saklı yordam parametre kendisine geçirilen veriler için çok kısa olarak ilan edilen neden olduğunu ortaya çıktı: parametresi VARCHAR(100)
olarak ilan edildi ama bir durumda veri 100'den fazla karakter geçirilen. Beni şaşırtan şey, SQL Server'ın herhangi bir hata veya uyarı bildirmediği idi - bu sadece verileri sessizce 100 karaktere böldü. En az SQL Server'ın yerel değişkenlerde ve saklı yordam parametrelerinde sessizce kesilmesini engellemenin bir yolu var mı?
1> declare @s varchar(5) = '123456789'; 2> print @s; 3> go 12345Ben SQL Server rapor hataları için etkinleştirebilirsiniz bir seçenek var mı (ya da:
1> create procedure WhereHasMyDataGone (@data varchar(5)) as 2> begin 3> print 'Your data is ''' + @data + '''.'; 4> end; 5> go 1> exec WhereHasMyDataGone '123456789'; 2> go Your data is '12345'.
Yerel değişkenler de aynı davranışı sergiler:
aşağıdaki SQLCMD oturumu bu gösterir uyarılar) böyle durumlarda? Veya tüm yerel değişkenleri ve saklı yordam parametrelerini VARCHAR(MAX)
veya NVARCHAR(MAX)
olarak mı belirtmeliyim?
Yinelenen (http://stackoverflow.com/questions/4628140/sql-server-silently-truncates-varchars-in-stored-proced [SQL Server sessizce saklı prosedürler varchar en keser] materyal Şekiller). Siz ** yapamazsınız. – gbn
@gbn: Yinelenen yeri bulduğunuz için teşekkürler - kendimi tespit etmediğim için özür dilerim. –