ALTER OUTLINE 
==================================



描述 
-----------

该语句仅支持使用SQL_TEXT创建的 OUTLINE，可用于添加绑定OUTLINE和限流规则。

格式 
-----------

```javascript
ALTER OUTLINE outline_name ADD stmt [ TO target_stmt ]
```



参数解释 
-------------



|     **参数**     |                                                                                                                       **描述**                                                                                                                        |
|----------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| outline_name   | 指定要创建的 OUTLINE 名称。                                                                                                                                                                                                                                  |
| stmt           | 一般为一个带有 hint 和原始参数的 DML 语句。                                                                                                                                                                                                                         |
| TO target_stmt | 如果不指定 TO target_stmt， 则表示如果数据库接受的SQL参数化后与stmt去掉hint参数化文本相同，则将该SQL绑定stmt中hint生成执行计划；如果期望对含有hint的语句进行固定计划，则需要 TO target_stmt 来指明原始的SQL。  **注意**  在使用target_stmt时，严格要求stmt与target_stmt在去掉hint后完全匹配。 |



示例 
-----------

* 通过ALTER OUTLINE来添加限流规则。




```javascript
OceanBase (root@oceanbase)> alter outline ol_1 add select /*+max_concurrent(1)*/ * from t1 where c1 = 1 and c2 = ?;
OceanBase (root@oceanbase)> alter outline ol_1 add select /*+max_concurrent(1)*/ * from t1 where c1 = ? and c2 = 1;
```



* 通过ALTER OUTLINE来添加执行计划。




```javascript
OceanBase (root@oceanbase)> create outline ol_2 on select /*+max_concurrent(1)*/ * from t1,t2 where t1.c1 = 1;
OceanBase (root@oceanbase)> alter outline ol_2 add select /*+use_nl(t2)*/ * from t1,t2 where t1.c1 = 1;
```



注意事项 
-------------

* 同一个outline_name 只能指定一个执行计划。如果通过create outline语句指定了执行计划，则无法通过执行alter outline时再添加。

* 同create outline类似，在alter outline时不能同时指定限流规则和执行计划。

* 执行alter outline时，需要outline_name和signature同时匹配。



