I have an sp named substatus which has an input parameter as AssignTo having length of 10. When I pass a value to AssignTo parameter having length > 10, rather than giving "string or binary data would be truncated" it is truncating the value passed to 10 characters. If we had tried saving more characters in a column of a table then it would have given an error of "string or binary data truncated". Why is the same rule not applicable if we are using variables? Can anyone please explain why it is behaving like this? sp definition ALTER PROC [dbo].[SubStatus] ( @AssignTo VARCHAR(10) = NULL ) AS BEGIN SELECT Case when @AssignTo IN ('Test TEAM','HelpUserDesk') Then 'Internal Team' else @AssignTo End END GO exec SubStatus 'HelpUserDesk'