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

Jaký je rozdíl mezi explicitními a implicitními kurzory v Oracle?

Implicitní kurzor je takový, který pro vás Oracle „automaticky“ vytvoří, když spustíte dotaz. Je jednodušší kódovat, ale trpí

  • neefektivita (norma ANSI určuje, že se musí načíst dvakrát, aby se zjistilo, zda existuje více než jeden záznam)
  • zranitelnost vůči chybám dat (pokud se někdy objeví dva řádky, vyvolá to výjimku TOO_MANY_ROWS)

Příklad

SELECT col INTO var FROM table WHERE something;

Explicitní kurzor je takový, který si sami vytvoříte. Vyžaduje to více kódu, ale poskytuje větší kontrolu - například můžete jednoduše otevřít-načíst-zavřít, pokud chcete pouze první záznam a je vám jedno, jestli existují další.

Příklad

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


  1. Vytváření funkcí v phpMyAdmin - Chyba:přístup odepřen, pro tuto operaci potřebujete super oprávnění

  2. Překlad dat Salesforce do formátu EDI

  3. java.sql.SQLException Index parametru je mimo rozsah (1> počet parametrů, což je 0)

  4. Jak vytvořit uživatele v MySQL