Objects referenced within a stored procedure must already exist. If objects are created within the stored procedure, you can reference them only after they've been created. The same holds true for temporary objects. A stored procedure can reference a temporary object only if the temporary object exists at the time the procedure is created or if the procedure itself creates the temporary object. A temporary object created in a procedure is dropped when the procedure exits.
If tables are created within a stored procedure, the column nullability decision is determined when the procedure is created. If column nullability is not explicitly defined, the nullability for each column will be defined based on the rules discussed in the CREATE TABLE topic and set based on the default nullability of the session and the database. To avoid any potential nullability problems, make sure to always explicitly define the nullability for each column.
Within a stored procedure, you cannot create an object (including a temporary one), drop the object, and then create a new object with the same name.
If you execute a procedure that calls another procedure, the called procedure can access objects created by the calling procedure.