【发布时间】:2017-11-24 08:27:59
【问题描述】:
您好,我正在尝试进行查询以绘制代码的完整调用图。
表格的列是 调用者类,调用者方法,被调用者类,被调用者方法
但是一些被调用者类以不必要的单词开头。所以当它检测到时,我必须先删除它们才能使用连接。
还有一件事。 一些被调用方法列的值仅包含方法名称,不包含参数。
我想要做的 sql 是
SELECT
caller_class, caller_method, callee_class, callee_method
FROM
call_rel
START WITH
caller_class ='test.callee.class'
AND
callee_method = 'test(java.lang.Object arg0)'
CONNECT BY NOCYCLE
PRIOR callee_class = caller_class
AND
PRIOR
CASE WHEN INSTR(callee_method, '(', 1, 1) > 0 --this means method name only
THEN callee_method LIKE CONCAT(caller_method, '%')
ELSE callee_method = caller_method
END;
db 说这个查询有错误。
我想要做的是,如果条件匹配,使用等于或不使用,使用 like 作为先验条件。
我应该如何修复这个 sql 查询...
【问题讨论】:
-
"db 说这个查询有错误。" - 这是……?
标签: sql case conditional-statements connect-by tibero