you mention "1) While creating a volatile talbe inside a stored procedure : it needs to be created first outside the SP and then again inside."
Can you share an simple example code for your volatile table / stored procedure issue. I am not sure that I understand your problem.
The volatile table exits within a session. So if you created it already before you run the SP create statement you will get the errors you see. So I wouldn't expect that you have to create them before...On the otherhand if you run the SP more then once in a single session you can run into the same issue...