0

ここに書いていないスクリプトを見ています。次のようになります。

SELECT
...
AND (
       A.FIELD IN
       (
        ...
        ...
       )
       OR B.FIELD IN
       (
        ...
        ...
       ) 
    )
...

それ自体では、スクリプトは正常に実行されます。エラーなし。しかし、次のように変更すると:

SELECT
...
AND B.FIELD IN
       (
        ...
        ...
       ) 
...

オラクルはORA-01722: invalid number. ただし、最初のクエリでスローされないのはなぜですか?

更新しました

A.FIELD は数値です B.FIELD は VARCHAR2 です

値は数値です。だから私はエラーを理解して同意しますが、なぜ最初のクエリでスローされないのか疑問に思いました。しかし、それは2番目です。

4

1 に答える 1

2

オラクルのドキュメントから:

論理式を評価するとき、PL/SQL は短絡評価を使用します。つまり、PL/SQL は、結果が決定されるとすぐに式の評価を停止します。これにより、エラーを引き起こす可能性のある式を記述できます。

詳細な説明と例については、 http://docs.oracle.com/cd/B19306_01/appdev.102/b14261/fundamentals.htm#sthref481を参照してください。

彼らはまた、特にそれについて言及しているこの別のドキュメントを持っていますOR: http://www.oracle-base.com/articles/misc/short-circuit-evaluation-in-plsql.php

于 2014-10-20T13:15:09.503 に答える