---
title: "GET_DDL - OceanBase 数据库 V4.3.4 | OceanBase 文档中心"
description: GET_DDL GET_DDL 函数用于调用单个对象的元数据作为 DDL 返回。它用来提取数据库对象（如 TABLE 、 VIEW 、 INDEX 、 PROCEDURE 、 SEQUENCE 、 TRIGGER 、 SYNONYM 、 FUNCTION 、 PACKAGE 等）的 DDL（Data Definiti…
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*P8CuR4UJ_FkAAAAAAAAAAAAADiGDAQ/original) OceanBase 数据库分布式版 - V 4.3.4

# GET_DDL

更新时间：2024-12-03 23:00:00

[编辑](https://github.com/oceanbase/oceanbase-doc/edit/V4.3.4/zh-CN/700.reference/500.sql-reference/300.pl-reference/300.pl-oracle/1400.pl-system-package-oracle/9900.dbms-metadata-oracle/200.get-ddl-oracle.md)  

`GET_DDL` 函数用于调用单个对象的元数据作为 DDL 返回。它用来提取数据库对象（如 `TABLE`、`VIEW`、`INDEX`、`PROCEDURE`、`SEQUENCE`、`TRIGGER`、`SYNONYM`、`FUNCTION`、`PACKAGE` 等）的 DDL（Data Definition Language）语句。

`GET_xxx` 函数用于通过一次调用获取对象的元数据。目前 OceanBase 数据库当前版本仅支持 `GET_DDL`。

#### 功能适用性

该内容仅适用于 OceanBase 数据库企业版。OceanBase 数据库社区版仅提供 MySQL 模式。

## 语法

```sql
FUNCTION  GET_DDL (
    object_type     VARCHAR,
    name            VARCHAR,
    ob_schema       VARCHAR DEFAULT NULL,
    version         VARCHAR DEFAULT 'COMPATIBLE',
    model           VARCHAR DEFAULT 'ORACLE',
    transform       VARCHAR DEFAULT 'DDL')
RETURN CLOB;

```

## 参数解释

| **参数** | **解释** |
| --- | --- |
| object_type | 要检索的对象的类型。对象类型的属性必须是一个已命名对象。当前支持的对象类型包括 `TABLE`、`VIEW`、`MATERIALIZED_VIEW`、`INDEX`、`PROCEDURE`、`SEQUENCE`、`TRIGGER`、`SYNONYM`、`FUNCTION`、`PACKAGE`。 |
| name | 对象的名称。 |
| ob_schema | 包含该对象的 Schema。默认为调用者的 Schema。 |
| version | 对象的 metadata 版本。 |
| model | metadata 的对象模型。 |
| transform | 应用 XSL-T 转换输出结果。 |

## 示例

### 简单示例

以下是针对不同对象类型的示例 SQL 语句，它们演示了如何使用 `GET_DDL` 获取相应的 DDL。请注意，这些示例中的对象名（如 `'MY_TABLE_NAME'`）需要替换为你数据库中实际存在的对象名。

- **提取表（TABLE）的 DDL 语句：**

  ```sql
  SELECT DBMS_METADATA.GET_DDL('TABLE', 'MY_TABLE_NAME') FROM DUAL;

  ```
 - **提取视图（VIEW）的 DDL 语句：**

  ```sql
  SELECT DBMS_METADATA.GET_DDL('VIEW', 'MY_VIEW_NAME') FROM DUAL;

  ```
 - **提取物化视图（MATERIALIZED VIEW）的 DDL 语句：**

  ```sql
  SELECT DBMS_METADATA.GET_DDL('MATERIALIZED_VIEW', 'MY_MATERIALIZED_VIEW_NAME') FROM DUAL;

  ```
 - **提取索引（INDEX）的 DDL 语句：**

  ```sql
  SELECT DBMS_METADATA.GET_DDL('INDEX', 'MY_INDEX_NAME') FROM DUAL;

  ```
 - **提取存储过程（PROCEDURE）的 DDL 语句：**

  ```sql
  SELECT DBMS_METADATA.GET_DDL('PROCEDURE', 'MY_PROCEDURE_NAME') FROM DUAL;

  ```
 - **提取序列（SEQUENCE）的 DDL 语句：**

  ```sql
  SELECT DBMS_METADATA.GET_DDL('SEQUENCE', 'MY_SEQUENCE_NAME') FROM DUAL;

  ```
 - **提取触发器（TRIGGER）的 DDL 语句：**

  ```sql
  SELECT DBMS_METADATA.GET_DDL('TRIGGER', 'MY_TRIGGER_NAME') FROM DUAL;

  ```
 - **提取同义词（SYNONYM）的 DDL 语句：**

  ```sql
  SELECT DBMS_METADATA.GET_DDL('SYNONYM', 'MY_SYNONYM_NAME') FROM DUAL;

  ```
 - **提取函数（FUNCTION）的 DDL 语句：**

  ```sql
  SELECT DBMS_METADATA.GET_DDL('FUNCTION', 'MY_FUNCTION_NAME') FROM DUAL;

  ```
 - **提取包（PACKAGE）的 DDL 语句：**

  ```sql
  SELECT DBMS_METADATA.GET_DDL('PACKAGE', 'MY_PACKAGE_NAME') FROM DUAL;

  ```

### 完整示例

我们将展示两个完整的示例来说明如何使用 `GET_DDL`。

- 示例 1：创建一个名为 tEst 的函数，它接受三个参数：一个整数 tEst、一个字符串 "nAMe" 和一个浮点数 age。函数的返回类型为浮点数。

```sql
create function tEst(tEst int, "nAMe" varchar2, age float)
return float
as
begin
  return age;
end;
/

-- 设置服务器输出，允许在控制台打印消息。
set serveroutput on;

-- 调用 `DBMS_METADATA.GET_DDL` 函数以获取名为 'TEST' 的函数的 DDL 语句。
call dbms_output.put_line(dbms_metadata.get_ddl('FUNCTION','TEST'));

```

`DBMS_METADATA.GET_DDL` 返回的是创建对象的 DDL 语句。

返回结果如下所示：

```shell
CREATE OR REPLACE PROCEDURE "SYS"."TEST"
(
 "TEST" IN int, "nAMe" IN varchar2, "AGE" IN float
) IS
begin
  null;
end

```

- 示例 2：创建了一个名为 tEst1 的存储过程，它接受三个参数：一个整数 tEst1、一个字符串 "nAMe" 和一个浮点数 age。

```sql
create procedure tEst1(tEst1 int, "nAMe" varchar2, age float)
as
begin
  null;
end;
/

-- 设置服务器输出，允许在 SQL 命令行界面打印消息。
set serveroutput on;

-- 调用 DBMS_METADATA.GET_DDL 函数获取名为 'TEST1' 的存储过程的 DDL 语句。
call dbms_output.put_line(dbms_metadata.get_ddl('PROCEDURE','TEST1'));

```

返回的是一个为过程 TEST1 创建的 DDL 语句。

返回结果如下所示：

```shell
CREATE OR REPLACE PROCEDURE "SYS"."TEST1"
(
 "TEST1" IN int, "nAMe" IN varchar2, "AGE" IN float
) IS
begin
  null;
end

```

 上一篇 下一篇 ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
