更新时间:2025-07-10 GMT+08:00
CREATE OUTLINE
功能描述
为指定的sql_hash创建一个新的outline。
注意事项
- 如果outline_text中的outline存在语法错误,创建报错syntax error。
- 执行成功后,会在SQL_OUTLINE系统表中插入一行。
- 该语法仅数据库管理员用户,或授予了gs_role_sql_management角色权限的用户可执行。
语法格式
1
|
CREATE OUTLINE outline_name FOR sql_hash USING outline_text; |
参数说明
- outline_name
指定新建outline的名字。
- sql_hash
新建outline对应的sql的sql_hash。
- outline_text
新建outline的具体内容。text类型,需要加单引号。
只支持把所有的hint写在一个hint注释中。如果有多个hint注释块,需合并为一个。
示例
数据库管理员用户创建outline:
1 2 3 4 5 6 7 |
CREATE OUTLINE outline_test1 FOR sql_be2995e824abb8b712b69fca4825b532 USING '/*+ leading(@sel$1 public.t1@sel$1 s1.t2@sel$1) */'; CREATE OUTLINE outline_test2 FOR sql_be2995e824abb8b712b69fca4825b532 USING '/*+ begin_outline_data leading(@sel$1 public.t1@sel$1 s1.t2@sel$1) end_outline_data */'; |
数据库管理员用户创建outline时,outline_text指定多个hint注释块,报错syntax error;合并为一个hint注释块后,创建成功:
1 2 3 4 5 6 7 8 |
CREATE OUTLINE outline_test3 FOR sql_be2995e824abb8b712b69fca4825b532 USING '/*+ leading(@sel$1 public.t1@sel$1 s1.t2@sel$1) */ /*+ mergejoin(@sel$1 t1@sel$1 t1@sel$2)*/'; ERROR: LINE 1: syntax error at '*' CREATE OUTLINE outline_test3 FOR sql_be2995e824abb8b712b69fca4825b532 USING '/*+ leading(@sel$1 public.t1@sel$1 s1.t2@sel$1) */' '/*+ mergejoin(@sel$1 t1@sel$1 t1@sel$2)*/'; ERROR: syntax error at or near "'/*+ mergejoin(@sel$1 t1@sel$1 t1@sel$2)*/'" LINE 1: ...+ leading(@sel$1 public.t1@sel$1 s1.t2@sel$1) */' '/*+ merge... ^ CREATE OUTLINE outline_test3 FOR sql_be2995e824abb8b712b69fca4825b532 USING '/*+ leading(@sel$1 public.t1@sel$1 s1.t2@sel$1) mergejoin(@sel$1 t1@sel$1 t1@sel$2)*/'; |
普通用户创建outline报错:
1 2 |
CREATE OUTLINE outline_test4 FOR sql_be2995e824abb8b712b69fca4825b532 USING '/*+ leading(@sel$1 public.t1@sel$1 s1.t2@sel$1) */'; ERROR: Permission denied to create outline. |