ALTER PROCEDURE

Oracle

ALTER PROCEDUREは、ストアド・プロシージャを明示的に再コンパイルするSQL文である。プロシージャを明示的に再コンパイルすることによって、実行時に暗黙的に再コンパイルする必要が無くなり、実行時のコンパイルエラーやパフォーマンス上のオーバーヘッドが無くなる。

パッケージの一部であるプロシージャを再コンパイルする場合は、ALTER PACKAGE 文を使用して、そのパッケージ全体を再コンパイルする必要がある。

ALTER PROCEDURE [schema.]procedure COMPILE [ DEBUG ] compiler_parameters_clause [ , ... ]
[ REUSE SETTINGS ]
schema
プロシージャが存在するスキーマを指定する。
SQL> ALTER PROCEDURE tsuka.example COMPILE;
procedure
再コンパイルするストアド・プロシージャを指定する。
SQL> ALTER PROCEDURE example COMPILE;
compiler_parameters_clause
コンパイラーパラメータを次の構文で指定する。
parameter_name = paramter_value

CREATE PROCEDUREとの違い

ALTER PROCEDURE文を使用して、既存のプロシージャの宣言や定義を変更することはできない。プロシージャを再宣言または再定義する場合は、CREATE OR REPLACE PROCEDURE文を使用する。

MySQL

ストアドプロシージャーの特性を変更する。

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

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 ] 

関連SQL