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

Каква е разликата между явните и неявните курсори в Oracle?

Неявният курсор е този, създаден "автоматично" за вас от Oracle, когато изпълнявате заявка. По-лесно е да се кодира, но страда от

  • неефективност (стандартът ANSI посочва, че трябва да извлича два пъти, за да провери дали има повече от един запис)
  • уязвимост към грешки в данните (ако някога получите два реда, това поражда TOO_MANY_ROWS изключение)

Пример

SELECT col INTO var FROM table WHERE something;

Явен курсор е този, който създавате сами. Отнема повече код, но дава повече контрол – например можете просто да отворите-извлечете-затворите, ако искате само първия запис и не ви пука дали има други.

Пример

DECLARE   
  CURSOR cur IS SELECT col FROM table WHERE something; 
BEGIN
  OPEN cur;
  FETCH cur INTO var;
  CLOSE cur;
END;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Възможно ли е да се изведе израз SELECT от PL/SQL блок?

  2. Ключова дума „CONTINUE“ в Oracle 10g PL/SQL

  3. Как да форматирате месеца с римски цифри в Oracle

  4. SQL грешка:ORA-01861:литералът не съвпада с форматен низ 01861

  5. Отървете се от дублиращи се стойности в една колона при избор на две колони