付録B.5 そのほかのエラー


Error 9001

構文解析用のスタックがオーバーフローしました。
The stack for syntax analysis has overflowed.

説明
構文解析用の作業領域が制限値に達しました。
または,制限値に達してはいませんが,データベースの制限値を超えました。
edmSQL文が複雑過ぎるため,構文が解析できません。単純な構文に変更してください。
構文が複雑になる要素としては,次のようなものが考えられます。
  • 副問い合わせのネストが深い
  • 演算子の入れ子指定が多い
  • 演算順序を指定する括弧の数が多い
複雑な構文のedmSQL文を指定すると,検索処理性能も低下する可能性があります。
単純な構文にするためには,次のような点を考慮してください。
  • 演算順序を考慮して,式をまとめる括弧を外す
  • 処理が再帰しないようにする
次に,複雑なedmSQL文を単純にする例を示します。
複雑なedmSQL文の例

SELECT  myProp_Foo
FROM    myClass
WHERE   (((myProp_Foo1 = 1)
           AND (myProp_Foo2 = 2))
                AND (myProp_Foo3 = 3))

単純なedmSQL文に置き換えた例

SELECT  myProp_Foo
FROM    myClass
WHERE   myProp_Foo1 = 1
         AND  myProp_Foo2 = 2
              AND  myProp_Foo3 = 3

このように,不要な括弧を外して構文を単純にすることで,スタックの消費量は少なくできます。