We have all our Sprocs in separate files (with version control etc.) - rather than just RightClick and Edit directly in the database!
We have this at the top of every SProc script
EXEC dbo.MyLogScriptRun 'MySProcName', '091113'
this creates an entry in a script logging table that MySproc was created and its version is 091113. We also log the currently logged on user, plus database and server name (which helps when a database is restored to another server and we wonder how MySproc got to be THAT version on THIS server!)
We also use this to check what version is installed on a specific client DB e.g. when diagnosing a problem, and as the basis of knowing what starting version to use (from version control) to deploy a fix; also for deplying an upgrade (so we can work out what SProcs are newer and need to be incorporated into a "release package")
Most of this you could do with DDL triggers (in SQL2005 onwards) but I'm not sure about being able to also store a version number.
We use this to log other scripts we run too - DDL manipulation scripts run during updates and so on.
The logging sproc is written so that executing
EXEC dbo.MyLogScriptRun 'MySProcName'
provides a list from the log. (i.e. I can highlight the first part of the line, excluding the version number, to get a list, or execute the whole line to create a log entry).