ALTER PROCEDURE
ALTER PROCEDURE 用于更改存储过程的一个或多个特性。
ALTER PROCEDURE 语法如下:
ALTER PROCEDURE proc_name [characteristic ...]
characteristic: {
COMMENT 'string'
| LANGUAGE SQL
| { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
| SQL SECURITY { DEFINER | INVOKER }
}
ALTER PROCEDURE 语句不能用于更改存储过程的参数或主体,如果需要进行此类更改,必须使用 DROP PROCEDURE 和 CREATE PROCEDURE 删除并重新创建过程。
您必须具有该过程的 ALTER PROCEDURE 权限。默认情况下,该权限自动授予过程创建者。
有关例程使用数据的特性信息如下:
-
CONTAINS SQL表示例程不包含读写数据的语句,这是默认值。例如,SET@x=1或DO RELEASE_LOCK('abc')会被执行但既不读取也不写入数据。 -
NO SQL表示例程不包含 SQL 语句。 -
READS SQL DATA表示例程包含读取数据的语句(例如SELECT),但不包含写入数据的语句。 -
MODIFIES SQL DATA表示例程包含可能写入数据的语句(例如INSERT或DELETE)。
SQL SECURITY 可以是 DEFINER 或 INVOKER,来指定例程是使用指定用户(此用户必须具有访问与例程关联的数据库的权限)的权限执行,还是使用调用者的权限执行。默认值为 DEFINER。调用例程的用户必须具有该例程的 EXECUTE 权限。
ALTER PROCEDURE 的示例如下:
ALTER PROCEDURE proc_name LANGUAGE SQL READS SQL DATA SQL SECURITY INVOKER COMMENT '示例';
Query OK, 0 rows affected