SQL 存储过程是一组 SQL 语句,这些语句具有一个已分配的名称,该名称以编译后的形式存储在数据库中,以便可以由大量程序共享。可以使用以下 SQL 语句创建一个示例 SQL 存储过程:
CREATE PROCEDURE SP_deleteTestTable () BEGIN DELETE FROM test; END;
创建存储过程后,可以通过执行 show procedure 查询检索其定义︰
SHOW PROCEDURE SP_deleteTestTable;
使用 Data Mover 复制 SQL 存储过程
Data Mover 按如下所示复制 SQL 存储过程:
- Data Mover 会通过执行 show procedure dbname.spname SQL 语句检索 SQL 存储过程创建 DDL。
- Data Mover 不会解析创建过程 DDL;它将在目标系统上执行完全相同的 DDL。它不会重新定位或重命名存储过程对象。
- 如果过程定义中的过程名称未完全限定,则该过程将在与源过程数据库名称相同的数据库中创建。
- 如果过程定义中的表名称未完全限定,则这些表必须位于与源过程数据库名称相同的数据库中,以避免出现错误。
- 如果要复制的对象在目标数据库中不存在,则会在目标数据库中创建该对象。如果对象在目标数据库中存在,则除非 overwrite_existing_objects 属性被设置为 false,否则将覆盖该对象。这种情况下,将生成创建时错误。
- 如果要在完整数据库复制中复制某个过程,则会通过 DSA 随数据库一起复制该过程,而不会单独复制该过程。
如果要复制 SQL 存储过程而不复制基础表,可以使用 DSA。请参阅关于使用 DSA 复制视图、宏和存储过程。