
# U0100071：动态SQL语句不支持自动转换
#### 描述
对于Oracle PLSQL中的动态SQL语句，UGO无法自动转换，生成错误提示。
**数据库类型与版本**
- 源库类型与版本：UGO 支持的 Oracle 版本。
- 目标库类型与版本：UGO 支持的 GaussDB 版本。
**语法示例**
```
create or replace function test(p1  int,p2  int,p3 int) return int
as
begin
return p1 + p2 + p3;
end;
/
DECLARE
  v_return_value NUMBER;
  v_input1 NUMBER := 10;
  v_input2 NUMBER := 10;
  v_input3 NUMBER := 10;
BEGIN
  EXECUTE IMMEDIATE 
    'BEGIN 
      :1:= test(:2, :3, :4); 
     END;'
 USING  out v_return_value , v_input1, v_input2, v_input3;
   END;
/
```
```
```
#### 改造建议
无自动转换方案，可使用"SQL语句转换"功能转换动态SQL中的内容。
如果"SQL语句转换"功能依然无法自动转换，需要人工修改动态SQL。
GaussDB修改后SQL:
```
create or replace function test(p1  int,p2  int,p3 int) return int
as
begin
return p1+p2+p3;
end;
/
DECLARE
  v_return_value NUMBER;
  v_input1 NUMBER := 10;
  v_input2 NUMBER := 10;
  v_input3 NUMBER := 10;
BEGIN
  EXECUTE IMMEDIATE 
    'BEGIN 
      select test(:2, :3, :4) into :v_return_value; 
     END;'
 USING  out v_return_value , v_input1, v_input2, v_input3;
 END;
/
```
