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

Wstawianie i aktualizacja w oparciu o rekordy w Oracle

Możesz również użyć rekordów opartych na deklaracjach %ROWTYPE względem tabeli, do której dokonywane jest wstawianie i aktualizowanie, lub na jawnym TYPE rekordu, który jest zgodny ze strukturą tabeli.

Przykład wstawiania opartego na rekordzie:

ZADEKLARUJ
my_book books%ROWTYPE;
BEGIN
my_book.isbn :='1-123456-123-1';
my_book.title :='Fox Infotech Blogs';
moja_książka.summary :='Przykłady lisów';
moja_książka.autor :='V. Kapoor';
my_book.page_count :=300;
WSTAW W KSIĄŻKI WARTOŚCI moja_książka;
END;
/
Zauważ, że nie umieszczasz nawiasów wokół specyfikatora rekordu . Jeśli używasz tego formatu:

WSTAW W KSIĄŻKI WARTOŚCI (moja_książka); -- Z nawiasami, NIEPRAWIDŁOWE!

wtedy otrzymasz wyjątek ORA-00947:za mało wartości, ponieważ program oczekuje oddzielnego wyrażenia dla każdej kolumny w tabeli.

Przykład aktualizacji opartej na rekordach:

Możesz także wykonać aktualizacje całego wiersza za pomocą rekordu. Poniższy przykład aktualizuje wiersz w tabeli książek za pomocą rekordu %ROWTYPE. Zauważ, że używam słowa kluczowego ROW, aby wskazać, że aktualizuję cały wiersz rekordem:

ZADEKLARUJ
my_book books%ROWTYPE;
BEGIN
my_book.isbn :='1-123456-123-1';
my_book.title :='Fox Infotech Blogs';
moja_książka.summary :='Przykłady lisów';
moja_książka.autor :='V. Kapoor';
moja_książka.page_count :=300;

UPDATE książki
SET ROW =moja_książka
WHERE isbn =moja_książka.isbn;
END;
/
Istnieją pewne ograniczenia dotyczące aktualizacji opartych na rekordach:

Musisz zaktualizować cały wiersz za pomocą składni ROW. Nie można zaktualizować podzbioru kolumn (chociaż może to być obsługiwane w przyszłych wersjach). Wszelkie pola, których wartości są pozostawione NULL, spowodują przypisanie wartości NULL do odpowiedniej kolumny.
Nie można wykonać aktualizacji za pomocą podzapytania.
A jeśli się zastanawiasz, nie możesz utworzyć kolumny tabeli o nazwie ROW.

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pobierz typ danych pola w instrukcji select w ORACLE

  2. Jaki jest odpowiednik SQL Server APPLY w Oracle?

  3. Korzystanie z Oracle JDeveloper 12c z Oracle Database 12c na platformie Oracle Cloud, część 1

  4. Parametr limitu czasu IDLE w Oracle

  5. Zestaw wyników#getDate() semantyka