PRINT truncates your string. I nicked a sproc called PrintBig off the web that I use. However, you'll need to use multiple variables anyway if you are executing this - 4000 in the first, 4000 in the second etc:
Just want to know why the string is getting truncated eventhough the varchar(max) can able to accomadate the string value.
The odds are near certain that your SQL client is truncating the string. What program are you using to run your query? SSMS is common for SQL2008 and SQL2005, Query Analyzer for SQL2000 and SQL 7.0, ISQL/W for SQL 6.5 and earlier.