Oracle
 sql >> база данни >  >> RDS >> Oracle

ORACLE:Използване на CTE (общи таблични изрази) с PL/SQL

Първо, това няма нищо общо с CTE. Това поведение би било същото с просто select * from table заявка. Разликата е, че при T-SQL заявката отива в имплицитен курсор, който се връща на повикващия. Когато изпълнявате SP от Management Studio, това е удобно. Наборът от резултати се появява в прозореца с данни, сякаш сме изпълнили директно заявката. Но това всъщност е нестандартно поведение. Oracle има по-стандартно поведение, което може да бъде заявено като "резултатният набор от всяка заявка, която не е насочена към курсор, трябва да бъде насочена към променливи." Когато е насочена към променливи, тогава заявката трябва да върне само един ред.

За да дублирате поведението на T-SQL, просто трябва изрично да декларирате и върнете курсора. Тогава извикващият код извлича от курсора целия набор от резултати, но един ред наведнъж. Не получавате удобството на Sql Developer или PL/SQL Developer, които отклоняват набора от резултати към прозореца за показване на данни, но не можете да имате всичко.

Въпреки това, тъй като обикновено не пишем SP само за да бъдат извикани от IDE, е по-лесно да се работи с явните курсори на Oracle, отколкото с неявните курсори на SQL Server. Просто потърсете в Google „oracle return ref cursor to caller“, за да получите много добър материал.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Подгответе тестови данни на Oracle с blob колона

  2. Какъв тип обект връща методът за изпълнение на Spring Hibernate Template за заявка за броене в Oracle?

  3. Функция CURRENT_DATE в Oracle

  4. Деклариране на потребителско дефинирано изключение с помощта на метод RAISE_APPLICATION_ERROR в базата данни на Oracle

  5. Примери за синтаксис за присъединяване на oracle