1. A method for supporting versions of a routine, comprising: creating a first version of the routine in response to receiving a create statement, wherein the first version is identified as an active version in a catalog in a datastore when created in response to receiving the create statement, wherein the first version of the routine is stored in the datastore; receiving multiple alter statements that include an add version clause; for each of the multiple alter statements that include an add version clause that is received, creating a new version of the routine, wherein multiple versions of the routine are stored in the datastore simultaneously, wherein the catalog in the datastore identifies one version of the multiple versions as an active version of the routine, wherein the active version identifies which version of the multiple versions of the routine to call when the routine is invoked; activating a second version of the routine in response to receiving an alter statement including an activate version clause that specifies a version to be activated, wherein the catalog in the datastore identifies the second version as the active version of the routine; receiving a request to invoke the routine; in response to receiving the request to invoke the routine, determining whether a version of the routine identified by a current version routine indicator exists; in response to determining that the version identified by the current routine version indicator exists, invoking the version of the routine identified by the current version routine indicator; and in response to determining that the version identified by the current routine version indicator does not exist, invoking the second version of the routine that is identified as the active version.