去掉sql中奇形怪状的注释
declare
i varchar2(4000);
o varchar2(4000);
begin
i := 'SELECT 11 C1 --/* 66
/*77*/ ,22 C2 /* ---55*/, 33 C3
/* 88
*/ /*/*/ FROM dual';
DBMS_UTILITY.EXPAND_SQL_TEXT(input_sql_text => i, output_sql_text => o);
dbms_output.put_line(o);
end;
这个过程会去掉sql中的所有注释,并且将*号列全部扩展、补全表的owner、给表名、字段名、表所有者都加上引号,而且还会把视图扩展成子查询。唯一的缺点是,它会在本数据库对sql的合法性进行校验,比如表名是否存在。
但是可以通过动态sql调用远程dblink的此过程来处理(实测DBLINK不同用lob参数,残念)