ALTER PROCEDUREは、ストアド・プロシージャを明示的に再コンパイルするSQL文である。プロシージャを明示的に再コンパイルすることによって、実行時に暗黙的に再コンパイルする必要が無くなり、実行時のコンパイルエラーやパフォーマンス上のオーバーヘッドが無くなる。
パッケージの一部であるプロシージャを再コンパイルする場合は、ALTER PACKAGE 文を使用して、そのパッケージ全体を再コンパイルする必要がある。
ALTER PROCEDURE [schema.]procedure COMPILE [ DEBUG ] compiler_parameters_clause [ , ... ]
[ REUSE SETTINGS ]
SQL> ALTER PROCEDURE tsuka.example COMPILE;
SQL> ALTER PROCEDURE example COMPILE;
parameter_name = paramter_value
ALTER PROCEDURE文を使用して、既存のプロシージャの宣言や定義を変更することはできない。プロシージャを再宣言または再定義する場合は、CREATE OR REPLACE 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 }
}
SQL Server で、CREATE PROCEDURE ステートメントを使用して作成した既存のプロシージャを変更する。
ALTER { PROC | PROCEDURE } [schema_name.] procedure_name [ ; number ]
[ { @parameter_name [ type_schema_name. ] data_type }
[ VARYING ] [ = default ] [ OUT | OUTPUT ] [READONLY]
] [ ,...n ]
[ WITH procedure_option [ ,...n ] ]
[ FOR REPLICATION ]
AS { [ BEGIN ] sql_statement [;] [ ...n ] [ END ] }
[;]
procedure_option ::=
[ ENCRYPTION ]
[ RECOMPILE ]
[ EXECUTE AS Clause ]