Is there a way to prevent SQL Server silently truncating data in local variables and stored procedure parameters?
Posted
by
Luke Woodward
on Stack Overflow
See other posts from Stack Overflow
or by Luke Woodward
Published on 2011-01-30T23:12:22Z
Indexed on
2011/01/30
23:25 UTC
Read the original article
Hit count: 186
sql-server
|tsql
I recently encountered an issue while porting an app to SQL Server. It turned out that this issue was caused by a stored procedure parameter being declared too short for the data being passed to it: the parameter was declared as VARCHAR(100)
but in one case was being passed more than 100 characters of data. What surprised me was that SQL Server didn't report any errors or warnings -- it just silently truncated the data to 100 characters.
The following SQLCMD session demonstrates this:
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'.
Local variables also exhibit the same behaviour:
1> declare @s varchar(5) = '123456789'; 2> print @s; 3> go 12345
Is there an option I can enable to have SQL Server report errors (or at least warnings) in such situations? Or should I just declare all local variables and stored procedure parameters as VARCHAR(MAX)
or NVARCHAR(MAX)
?
© Stack Overflow or respective owner