

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# sp\$1babelfish\$1volatility
<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\$1name (選用)*   
您可以使用兩段式名稱 (如 `schema_name.function_name`) 或僅使用 `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)

**注意**  
當使用具有多個定義的 `function_name` 呼叫 `sp_babelfish_volatility` 時，其會擲出一個錯誤。

## 結果集
<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\$1name 時，其會顯示結構描述名稱，函數名稱，以及該函數的波動。下列範例顯示函數在變更值之後的波動：

```
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
```