sql >> Databáze >  >> RDS >> Oracle

SELECT * FROM TABLE (zřetězená funkce):mohu si být jistý pořadím řádků ve výsledku?

Nemyslím si, že v dokumentaci není nikde uvedeno, co by zaručovalo pořadí, ve kterém budou data vrácena.

Existuje starý Vlákno Toma Kyte z roku 2003 (takže možná být zastaralý), který uvádí, že spoléhat se na implicitní pořadí by nebylo vhodné ze stejných důvodů, jako byste se nespoléhali na pořadí v běžném SQL.

Chcete-li, aby byly výsledky dotazu seřazeny, měli byste pro jistotu postupovat jako vždy v dotazu a uvést explicitní ORDER BY.

Poté, co jsem řekl, že jsem vzal vaši funkci a provedl 10 milionů iterací, abych zkontroloval, zda byl implicitní příkaz někdy porušen; nebylo.

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. Odesílání proměnných v URL v PHP s echem

  2. Používá PostgreSQL tf-idf?

  3. Je možné volat typ záznamu uvnitř kurzoru?

  4. Codeigniter Cart - ukládání dat do databáze - jak přistupovat?