0

これを Oracle 10g で実行すると、予想どおり、「ORA-01427: 単一行のサブクエリが複数の行を返します」というエラーが表示されます。

WITH a as (select  1 somenumber  from dual),
     b as (           select 'foo' foo from dual 
            union all select 'goo'     from dual)
SELECT (select 0.5 from b) 
FROM a 

ただし、次のステートメントを実行すると、エラーは発生せず、代わりに「2.5」が返されます。

WITH a as (select  1 somenumber  from dual),
     b as (           select 'foo' foo from dual 
            union all select 'goo'     from dual)
SELECT (select sum(a.somenumber)  + 0.5 from b) 
FROM a 

サブクエリを合計してから、サブクエリの実行後に行われたかのように 0.5 を追加するのが標準ですか? それとも、これはOracleの機能/バグですか?

編集: 好奇心旺盛な人のために、実際のコードは次のようになります。

WITH a as (select  1 somenumber  from dual),
     b as (           select 'foo' foo from dual 
            union all select 'goo'     from dual)
SELECT (select sum(a.somenumber)  + customfunction(a.somenumber) from b) 
FROM a 
4

1 に答える 1