如果要在不删除对象的情况下更改过程的内容和属性,可以使用 ALTER PROCEDURE。
ALTER PROCEDURE [()] [LANGUAGE ]
[DEFAULT SCHEMA ]
[READS SQL DATA] [] [ DETERMINISTIC ] [WITH ENCRYPTION] [AUTOCOMMIT DDL { ON|OFF } ] AS
BEGIN [SEQUENTIAL EXECUTION]
END
有关参数的详细信息,请参见 CREATE PROCEDURE。
例如,使用 ALTER PROCEDURE 可以更改正文本身的内容。请考虑以下 GET_PROCEDURES 过程,该过程返回数据库中的所有过程名。
CREATE PROCEDURE GET_PROCEDURES(OUT procedures TABLE(schema_name NVARCHAR(256), name NVARCHAR(256)))
AS
BEGIN
procedures = SELECT schema_name AS schema_name, procedure_name AS name FROM PROCEDURES;
END;
现在应更改过程 GET_PROCEDURES 以仅返回有效过程。为此,请使用 ALTER PROCEDURE:
ALTER PROCEDURE GET_PROCEDURES( OUT procedures TABLE(schema_name NVARCHAR(256), name NVARCHAR(256)))
AS
BEGIN
procedures = SELECT schema_name AS schema_name, procedure_name AS name FROM PROCEDURES WHERE IS_VALID = 'TRUE';
END;
除了更改过程主体外,您还可以更改过程的语言
备注如果未显式指定缺省模式和只读模式,则会将其删除。缺省语言为 SQLScript。 备注您必须具有要更改对象的 ALTER 权限。