.\\" auto-generated by docbook2man-spec $Revision: 1.2 $
.TH "ALTER FUNCTION" "" "2007-05-04" "SQL - 言語" "SQLコマンド"
.SH NAME
ALTER FUNCTION \- 関数定義を変更する

.SH SYNOPSIS
.sp
.nf
ALTER FUNCTION \fIname\fR ( [ [ \fIargmode\fR ] [ \fIargname\fR ] \fIargtype\fR [, ...] ] )
    \fIaction\fR [, ... ] [ RESTRICT ]
ALTER FUNCTION \fIname\fR ( [ [ \fIargmode\fR ] [ \fIargname\fR ] \fIargtype\fR [, ...] ] )
    RENAME TO \fInew_name\fR
ALTER FUNCTION \fIname\fR ( [ [ \fIargmode\fR ] [ \fIargname\fR ] \fIargtype\fR [, ...] ] )
    OWNER TO \fInew_owner\fR
ALTER FUNCTION \fIname\fR ( [ [ \fIargmode\fR ] [ \fIargname\fR ] \fIargtype\fR [, ...] ] )
    SET SCHEMA \fInew_schema\fR

ここで、\fIaction\fRは以下のいずれかです。

    CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT
    IMMUTABLE | STABLE | VOLATILE
    [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER
.sp
.fi
.SH "説明"
.PP
\fBALTER FUNCTION\fRは関数定義を変更します。
.PP
\fBALTER FUNCTION\fRを使用するには関数の所有者でなければなりません。
関数のスキーマを変更するには、新しいスキーマにおけるCREATE権限も必要です。
所有者を変更するには、直接または間接的に新しいロールのメンバでなければなりません。
また、そのロールが関数のスキーマにおいてCREATEを持たなければなりません。
（この制限により、強制的に、所有者の変更が関数の削除と再作成で行うことができない何らかの処理を行わないようになります。
しかし、スーパーユーザはすべての関数の所有者を変更することができます。）
.SH "パラメータ"
.TP
\fB\fIname\fB\fR
既存の関数名です（スキーマ修飾名も可）。
.TP
\fB\fIargmode\fB\fR
引数のモードで、IN、OUT、 INOUTのいずれかです。
省略された場合のデフォルトはINです。
関数の識別を行うには入力引数のみが必要ですので、実際には\fBALTER FUNCTION\fRがOUT引数を無視することに注意してください。
ですので、INおよびINOUT引数を列挙することで十分です。
.TP
\fB\fIargname\fB\fR
引数の名前です。
関数の識別を行うには引数のデータ型のみが必要ですので、実際には\fBALTER FUNCTION\fRは引数の名前を無視することに注意してください。
.TP
\fB\fIargtype\fB\fR
もしあれば、その関数の引数のデータ型（複数可）です。
（スキーマで修飾可能です）
.TP
\fB\fInew_name\fB\fR
新しい関数名です。
.TP
\fB\fInew_owner\fB\fR
新しい関数の所有者です。
関数にSECURITY DEFINERが指定されている場合、その後は新しい所有者の権限で関数が実行されることに注意してください。
.TP
\fB\fInew_schema\fB\fR
関数の新しいスキーマです。
.TP
\fBCALLED ON NULL INPUT\fR
.TP
\fBRETURNS NULL ON NULL INPUT\fR
.TP
\fBSTRICT\fR
CALLED ON NULL INPUTは、引数の一部またはすべてがNULLの場合に関数が呼び出されるように変更します。
RETURNS NULL ON NULL INPUTもしくはSTRICTは、引数の一部がNULLの場合に関数が呼び出されないように変更します。
詳細はCREATE FUNCTION [\fBcreate_function\fR(l)]を参照してください。
.TP
\fBIMMUTABLE\fR
.TP
\fBSTABLE\fR
.TP
\fBVOLATILE\fR
関数の揮発性を指定した設定に変更します。
関数の揮発性に関する詳細はCREATE FUNCTION [\fBcreate_function\fR(l)]を参照してください。
.TP
\fB[ EXTERNAL ] SECURITY INVOKER\fR
.TP
\fB[ EXTERNAL ] SECURITY DEFINER\fR
関数のセキュリティを定義者にするか否かを変更します。
EXTERNALキーワードはSQLとの互換性のためのものであり、無視されます。
この機能の詳細はCREATE FUNCTION [\fBcreate_function\fR(l)]を参照してください。
.TP
\fBRESTRICT\fR
標準SQLとの互換性のためのものであり、無視されます。
.SH "例"
.PP
\fBinteger\fR型用のsqrt関数の名前をsquare_rootに変更します。
.sp
.nf
ALTER FUNCTION sqrt(integer) RENAME TO square_root;
.sp
.fi
.PP
\fBinteger\fR型用のsqrt関数の所有者をjoeに変更します。
.sp
.nf
ALTER FUNCTION sqrt(integer) OWNER TO joe;
.sp
.fi
.PP
\fBinteger\fR型用のsqrt関数のスキーマをmathsに変更します。
.sp
.nf
ALTER FUNCTION sqrt(integer) SET SCHEMA maths;
.sp
.fi
.SH "互換性"
.PP
この文の一部は標準SQLの\fBALTER FUNCTION\fR文に従っています。
標準ではより多くの関数の属性を変更できますが、関数名の変更、関数を定義者の権限で実行するかどうかの変更、関数の所有者やスキーマ、揮発性の変更を行う機能はありません。
また、標準ではRESTRICTキーワードを必須としていますが、PostgreSQLでは省略可能です。
.SH "関連項目"
CREATE FUNCTION [\fBcreate_function\fR(l)], DROP FUNCTION [\fBdrop_function\fR(l)]
