

# sp\_babelfish\_volatility
<a name="sp_babelfish_volatility"></a>

PostgreSQL 関数の変動性により、オプティマイザはクエリをより適切に実行でき、特定の句の一部で使用すると、クエリのパフォーマンスに大きな影響を与えます。

## 構文
<a name="sp_babelfish_volatility-syntax"></a>

 

```
sp_babelfish_volatility ‘function_name’, ‘volatility’
```

## 引数
<a name="sp_babelfish_volatility-arguments"></a>

 *function\_name (オプション)*   
この引数の値は、`schema_name.function_name` として 2 つの部分からなる名前で指定するか、`function_name` のみを指定することができます。`function_name` のみを指定した場合、スキーマ名は、現在のユーザーのデフォルトスキーマです。

 *変動性 (オプション)*   
PostgreSQL の変動性の有効な値は、`stable`、`volatile`、または `immutable` です。詳細については、「[https://www.postgresql.org/docs/current/xfunc-volatility.html](https://www.postgresql.org/docs/current/xfunc-volatility.html)」を参照してください。

**注記**  
`sp_babelfish_volatility` が複数の定義を持つ `function_name` で呼び出されると、エラーをスローします。

## 結果セット
<a name="sp_babelfish_volatility-return-type"></a>

パラメータが指定されていない場合、結果セットは `schemaname`、`functionname`、`volatility` 列に表示されます。

## 使用に関する注意事項
<a name="sp_babelfish_volatility-usage-notes"></a>

PostgreSQL 関数の変動性により、オプティマイザはクエリをより適切に実行でき、特定の句の一部で使用すると、クエリのパフォーマンスに大きな影響を与えます。

## 例
<a name="sp_babelfish_volatility-examples"></a>

次の例は、簡単な関数を作成する方法を示し、後でさまざまな方法を使用してこれらの関数で `sp_babelfish_volatility` を使用する方法を示します。

```
1> create function f1() returns int as begin return 0 end
2> go
```

```
1> create schema test_schema
2> go
```

```
1> create function test_schema.f1() returns int as begin return 0 end
2> go
```

次の例は、関数の変動性を示しています。

```
1> exec sp_babelfish_volatility
2> go
            
schemaname  functionname volatility
----------- ------------ ----------
dbo         f1           volatile
test_schema f1           volatile
```

次の例は、関数の変動性を変更する方法を示しています。

```
1> exec sp_babelfish_volatility 'f1','stable'
2> go
1> exec sp_babelfish_volatility 'test_schema.f1','immutable'
2> go
```

function\_name のみを指定すると、その関数のスキーマ名、関数名、および変動性が表示されます。次の例は、値を変更した後の関数の変動性を示しています。

```
1> exec sp_babelfish_volatility 'test_schema.f1'
2> go
            
schemaname  functionname volatility
----------- ------------ ----------
test_schema f1           immutable
```

```
1> exec sp_babelfish_volatility 'f1'
2> go
            
schemaname  functionname volatility
----------- ------------ ----------
dbo         f1           stable
```

引数を指定しなかった場合、現在のデータベースに存在する関数のリスト (スキーマ名、関数名、変動性) が表示されます。

```
1> exec sp_babelfish_volatility 
2> go
            
schemaname  functionname volatility
----------- ------------ ----------
dbo         f1           stable
test_schema f1           immutable
```