
# U0000010: 动态SQL包含不支持自动转换语法。
#### 描述
对于Oracle PLSQL中的动态SQL语句，由于动态SQL包含不支持语法点，因此生成错误提示。
**数据库类型与版本**
- 源库类型与版本：UGO 支持的 Oracle 版本。
- 目标库类型与版本：UGO 支持的 GaussDB 版本。
**语法示例**
```
CREATE OR REPLACE PROCEDURE SEQ_PRO(v_sequence_name VARCHAR2,v_new_increment NUMBER ) AS
BEGIN
  -- 直接修改序列步长
  EXECUTE IMMEDIATE 'ALTER SEQUENCE ' || v_sequence_name || 
                   ' INCREMENT BY ' || v_new_increment;
  DBMS_OUTPUT.PUT_LINE('序列 ' || v_sequence_name || ' 步长已改为 ' || v_new_increment);
  END;
  /
```
#### 改造建议
无自动转换方案，可使用"SQL语句转换"功能转换动态SQL中的内容。
如果"SQL语句转换"功能依然无法自动转换，需要人工修改动态SQL。
GaussDB修改后SQL:
```
--首先构造修改步长的函数
CREATE OR REPLACE FUNCTION alter_sequence_increment(seqname text, newincrement int)
RETURN void AS
    currentval bigint;
    v_sql text;
BEGIN
     v_sql :='SELECT nextval(''' || seqname || ''') - 1';
     execute immediate v_sql into currentval;    
     execute immediate 'drop sequence '||seqname;
     execute immediate 'create sequence '|| seqname || ' increment by ' || newincrement || ' start with '|| currentval + newincrement ;
    return ;
END;
/
---修改步长的procedure
CREATE OR REPLACE PROCEDURE SEQ_PRO(v_sequence_name VARCHAR2,v_new_increment NUMBER ) AS
BEGIN
  -- 直接修改序列步长
  --EXECUTE IMMEDIATE 'ALTER SEQUENCE ' || v_sequence_name || 
                  -- ' INCREMENT BY ' || v_new_increment;
    PERFORM  alter_sequence_increment(v_sequence_name,v_new_increment);       
  DBE_OUTPUT.PRINT_LINE('序列 ' || v_sequence_name || ' 步长已改为 ' || v_new_increment);
  END;
  /
```
