更新时间:2025-10-22 GMT+08:00
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;
DBMS_OUTPUT.PUT_LINE('返回值: ' || v_return_value);
END;
/
改造建议
无自动转换方案,可使用功能转换动态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;
DBE_OUTPUT.PRINT_LINE('返回值: ' || v_return_value);
END;
/