ALTER FUNCTION

Oracle

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

ALTER FUNCTION foo COMPILE

他のスキーマにあるファンクションをコンパイルするには、スキーマ名を指定する。

ALTER FUNCTION bar.foo COMPILE

PL/SQLデバッガで使用するためのコードを生成するには、DEBUGオプションを指定する。

ALTER FUNCTION foo COMPILE DEBUG

または、PL/SQLコンパイラのPLSQL_DEBUGオプションにTRUEを指定する。

ALTER FUNCTION foo COMPILE PLSQL_DEBUG = TRUE

既存ファンクション定義の変更

MySQLPostgreSQLSQL Server の ALTER FUNCTION 文は既存の関数定義を変更できるが、Oracle の ALTER FUNCTION 文は既存のプロシージャの宣言や定義を変更することはできない。Oracle でファンクションを再宣言または再定義する場合は、CREATE OR REPLACE FUNCTION 文を使う。

PostgreSQL

関数定義を変更する。

ALTER FUNCTION name ( [ [ argmode ] [ argname ] argtype [, ...] ] )
  action [ ... ] [ RESTRICT ]
ALTER FUNCTION name ( [ [ argmode ] [ argname ] argtype [, ...] ] )
  RENAME TO new_name
ALTER FUNCTION name ( [ [ argmode ] [ argname ] argtype [, ...] ] )
  OWNER TO new_owner
ALTER FUNCTION name ( [ [ argmode ] [ argname ] argtype [, ...] ] )
  SET SCHEMA new_schema

SQL Server

既存の関数を変更する。

ALTER FUNCTION [ schema_name. ] function_name   
( [ { @parameter_name [ AS ][ type_schema_name. ] parameter_data_type   
    [ = default ] }   
    [ ,...n ]  
  ]  
)  
RETURNS return_data_type  
    [ WITH  [ ,...n ] ]  
    [ AS ]  
    BEGIN   
        function_body   
        RETURN scalar_expression  
    END  
[ ; ]

MySQL

ストアドファンクションの特性を変更する。

ALTER FUNCTION func_name [characteristic ...]

characteristic: {
    COMMENT 'string'
  | LANGUAGE SQL
  | { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
  | SQL SECURITY { DEFINER | INVOKER }
}

関連SQL

ALTER PACKAGE
パッケージを再コンパイルする。
ALTER PROCEDURE
プロシージャを再コンパイルする。
CALL
プロシージャやファンクションを実行する。
CREATE FUNCTION
ファンクションを作成する。
CREATE PACKAGE
パッケージの仕様部を作成する。
CREATE PACKAGE BODY
パッケージの本体を作成する。
CREATE PROCEDURE
プロシージャを作成する。
DROP FUNCTION
ファンクションを削除する。
DROP PACKAGE
パッケージを削除する。
DROP PROCEDURE
プロシージャを削除する。