sql >> データベース >  >> RDS >> Oracle

SELECT * FROM TABLE(パイプライン関数):結果の行の順序を確認できますか?

    ドキュメントのどこにも保証があるとは思いません。 データが返される順序。

    古いトムカイトスレッド 2003年から(可能性があります 通常のSQLの順序に依存しないのと同じ理由で、暗黙の順序に依存することはお勧めできません。

    安全のため、クエリ結果を並べ替える場合は、クエリでいつも行うように、明示的なORDERBYを指定する必要があります。

    私はあなたの関数を取り、1000万回の反復を実行して、暗黙の順序が破られたかどうかを確認したと言いました。そうではありませんでした。

    SQL> begin
      2    for i in 1 .. 10000000 loop
      3      for j in ( SELECT a.*, rownum as rnum FROM table(temp_func()) a ) loop
      4
      5         if j.x <> j.rnum then
      6            raise_application_error(-20000,'It broke');
      7         end if;
      8      end loop;
      9    end loop;
     10  end;
     11  /
    
    PL/SQL procedure successfully completed.
    


    1. MySQLの日付と時刻の単位(完全なリスト)

    2. PostgreSQLのチェック制約を理解する

    3. ORACLE TIMESTAMP(9)フィールドのjava.util.Dateへのマッピング

    4. FORMATを使用するMySQLがORDERを無視するのはなぜですか?