SqlFormatter

2点ダメなケースを見つけました。(T◇T)
関数名はDBによって異なるので、あらかじめ使っているDBの関数名を
登録していなければなりません。
これは、DatabaseMetaDataの以下のメソッドで取得できると思っていたのですが、オラクルの場合それらに含まれない関数があるのです。

getNumericFunctions = ABS,ACOS,ASIN,ATAN,ATAN2,CEILING,COS,EXP,FLOOR,LOG,LOG10,MOD,PI,POWER,ROUND,SIGN,SIN,SQRT,TAN,TRUNCATE
getStringFunctions = ASCII,CHAR,CONCAT,LCASE,LENGTH,LTRIM,REPLACE,RTRIM,SOUNDEX,SUBSTRING,UCASE
getSystemFunctions = USER
getTimeDateFunctions = HOUR,MINUTE,SECOND,MONTH,YEAR

なぜかこの中にはNVLやTO_DATEやSUBSTRがありません。
これらのメソッドってそういう意味じゃないのかな???


もう一つダメなケース。

SELECT
        a.emp_id
        ,a.dept_id
        ,b.dept_id
        ,b.dept_name
    FROM
        emp a
        ,dept b
    WHERE
        a.dept_id = b.dept_id (
            +
        )

http://oracle.se-free.com/dml/08_outer.html
なんだ?(+)って?外部結合???
これってオラクルだけなの? それとも標準SQLに含まれるの?
これは演算子的なモノ?文法的にはどういうモノになるんだろう?


http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/server.102/B19201-02/queries.html#4982
外部結合演算子。オラクル固有みたい。
演算子ということは字句解析レベルに手を入れる必要がある。しかしオラクルのみに依存したくはない。あぁ、悩ましい・・・。