Oracle
 sql >> Baza danych >  >> RDS >> Oracle

ORACLE:Używanie CTE (wspólnych wyrażeń tabel) z PL/SQL

Po pierwsze, nie ma to nic wspólnego z CTE. To zachowanie byłoby takie samo w przypadku prostego select * from table zapytanie. Różnica polega na tym, że w T-SQL zapytanie przechodzi do niejawnego kursora, który jest zwracany do wywołującego. Przy wykonywaniu SP z Management Studio jest to wygodne. Zestaw wyników pojawia się w oknie danych, tak jakbyśmy bezpośrednio wykonali zapytanie. Ale to w rzeczywistości niestandardowe zachowanie. Oracle ma bardziej standardowe zachowanie, które można określić jako „zestaw wyników każdego zapytania, które nie jest skierowane do kursora, musi być skierowany do zmiennych”. Po skierowaniu do zmiennych zapytanie musi zwrócić tylko jeden wiersz.

Aby zduplikować zachowanie T-SQL, wystarczy jawnie zadeklarować i zwrócić kursor. Następnie kod wywołujący pobiera z kursora cały zestaw wyników, ale po jednym wierszu na raz. Nie masz wygody, jaką daje programista Sql lub programista PL/SQL, który przekierowuje zestaw wyników do okna wyświetlania danych, ale nie możesz mieć wszystkiego.

Jednakże, ponieważ generalnie nie piszemy SP tylko po to, by były wywoływane z IDE, łatwiej jest pracować z jawnymi kursorami Oracle niż niejawnymi SQL Server. Po prostu wpisz w Google „Oracle return ref cursor to caller”, aby uzyskać dużo dobrego materiału.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jquery w apex 4 Click event help

  2. Dekodowanie SQLplus w celu wykonywania skryptów

  3. Jak dołączyć do dwóch stołów, aby uzyskać następujący wynik?

  4. Ustawienie wyższego rozmiaru pobieranych wierszy Oracle powoduje spowolnienie mojej aplikacji?

  5. sql - wstaw, jeśli nie istnieje