如果要在不删除对象的情况下更改函数的内容和属性,可以使用 ALTER FUNCTION。
ALTER FUNCTION
{
[ ( ) ]
[ RETURNS ]
[ LANGUAGE ]
[ SQL SECURITY { DEFINER | INVOKER } ]
[ DEFAULT SCHEMA ]
[ ]
[ DETERMINISTIC ]
[ WITH ENCRYPTION ]
[ [ NO ] STRUCTURED FILTER CHECK ]
AS
[ HEADER ONLY ON INVALID ]
BEGIN
END
|
ALTER FUNCTION ENCRYPTION ON
}
有关参数的详细信息,请参阅 CREATE FUNCTION。例如,使用 ALTER FUNCTION 可以更改正文本身的内容。请考虑以下返回数据库上所有函数名的过程 GET_FUNCTIONS。
CREATE FUNCTION GET_FUNCTIONS
returns TABLE(schema_name NVARCHAR(256),
name NVARCHAR(256))
AS
BEGIN
return SELECT schema_name AS schema_name,
function_name AS name
FROM FUNCTIONS;
END;
现在应更改函数 GET_FUNCTIONS 以仅返回有效函数。为此,我们将使用 ALTER FUNCTION:
ALTER FUNCTION GET_FUNCTIONS
returns TABLE(schema_name NVARCHAR(256),
name NVARCHAR(256))
AS
BEGIN
return SELECT schema_name AS schema_name,
function_name AS name
FROM FUNCTIONS
WHERE IS_VALID = 'TRUE';
END;
除了更改函数主体外,您还可以更改缺省模式
备注如果未显式指定缺省模式,则会将其移除。 备注您需要更改对象的 ALTER 权限。