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

Vložení a aktualizace na základě záznamu v Oracle

Můžete také použít záznamy, které jsou založeny na deklaracích %ROWTYPE proti tabulce, do které se provádí vložení a aktualizace, nebo na explicitním záznamu TYPE, který je kompatibilní se strukturou tabulky.

Příklad vložení podle záznamu:

DECLARE
my_book books%ROWTYPE;
BEGIN
my_book.isbn :='1-123456-123-1';
my_book.title :='Fox Infotech Blogs';
moje_kniha.summary :='Příklady lišek';
moje_kniha.author :='V. Kapoor';
my_book.page_count :=300;
INSERT INTO books VALUES my_book;
END;
/
Všimněte si, že kolem specifikátoru záznamu nevkládáte závorky . Pokud používáte tento formát:

INSERT INTO books VALUES (moje_kniha); -- Se závorkami, NEPLATNÉ!

pak dostanete výjimku ORA-00947:not dostatek hodnot, protože program očekává samostatný výraz pro každý sloupec v tabulce.

Příklad aktualizace na základě záznamu:

Můžete také provádět aktualizace celého řádku pomocí záznamu. Následující příklad aktualizuje řádek v tabulce knih záznamem %ROWTYPE. Všimněte si, že klíčové slovo ROW používám k označení, že aktualizuji celý řádek záznamem:

DECLARE
my_book books%ROWTYPE;
BEGIN
my_book.isbn :='1-123456-123-1';
my_book.title :='Fox Infotech Blogs';
moje_kniha.summary :='Příklady lišek';
moje_kniha.author :='V. Kapoor';
my_book.page_count :=300;

AKTUALIZOVAT knihy
NASTAVIT ŘÁDEK =moje_kniha
WHERE isbn =moje_kniha.isbn;
END;
/
Pro aktualizace založené na záznamech platí určitá omezení:

Musíte aktualizovat celý řádek pomocí syntaxe ROW. Nemůžete aktualizovat podmnožinu sloupců (ačkoli to může být podporováno v budoucích verzích). Všechna pole, jejichž hodnoty jsou ponechány na NULL, budou mít za následek přiřazení hodnoty NULL k odpovídajícímu sloupci.
Nemůžete provést aktualizaci pomocí poddotazu.
A pokud vás to zajímá, nemůžete vytvořit sloupec tabulky s názvem ROW.

  1. Datový typ záznamu založený na kurzoru s kurzorem vracejícím více hodnot v databázi Oracle

  2. Jak udělat RAND() deterministický v SQL Server

  3. Funkce UPPER() v Oracle

  4. Omezení pouze pro jeden záznam označený jako výchozí