我想使用antlr更改dbms_lob.substr:示例1:输入:
DBMS_LOB.SUBSTR(field_name1, 4000, 1)
输出:
SUBSTR(field_name1, 1, 4000)
我们需要做2件事:1)删除DBMS_LOB。2)互换2nd&第三参数
我能够覆盖特定令牌的规则并将其更改以处理上述。
处理递归的问题:我有这样的输入:
DBMS_LOB.SUBSTR(field_name1, DBMS_LOB.SUBSTR(field_name2, 6000, 1), DBMS_LOB.SUBSTR(field_name3, 8000, 1))
我想更改类似:
SUBSTR(field_name1, SUBSTR(field_name3, 1, 8000), SUBSTR(field_name2, 1, 6000))
当原始语句中的多个级别出现多个级别时,如何处理如何处理。
任何帮助将不胜感激。
如果不知道您用来实现此任务的方法,很难分辨。
但总的来说,建议看起来像这样:
将Inner dbms_lob.substr语句视为单末端语句。
我的意思是,在处理
时,您的替换算法没有区别" dbms_lob.substr(field_name1,4000,1)"
或
" dbms_lob.substr(field_name1,dbms_lob.substr(field_name2,6000,1),dbms_lob.sub.substr(field_name3,8000,1))"。
在两种情况下由。