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を使用してコピーされます。個別にはコピーされません。