I have some doubt in this statement...
a store procedure can have multiple BEGIN END block.
I guess by local you mean the var is accessible in the block where it has been defined.....whereas a user session variable can be accessible in all blocks irrespective of where it has been defined.
Please correct me if I'm wrong. I hope I understood you correctly.