sql >> Database teknologi >  >> RDS >> Oracle

Optagelsesbaseret indsættelse og opdatering i Oracle

Du kan også bruge poster, der er baseret på %ROWTYPE-deklarationer mod den tabel, som indsættelsen og opdateringen foretages til, eller på en eksplicit postTYPE, der er kompatibel med tabellens struktur.

Record Based Insert Eksempel:

DECLARE
my_book books%ROWTYPE;
BEGIN
my_book.isbn :='1-123456-123-1';
my_book.title :='Fox Infotech Blogs';
my_book.summary :='Ræveeksempler';
my_book.author :='V. Kapoor';
my_book.page_count :=300;
INSERT INTO books VALUES my_book;
END;
/
Bemærk, at du ikke inkluderer parenteser omkring postspecifikationen . Hvis du bruger dette format:

INSERT INTO books VALUES (min_bog); -- Med parentes, UGYLDIG!

så får du en ORA-00947:ikke nok værdier undtagelse, da programmet forventer et separat udtryk for hver kolonne i tabellen.

Eksempel på registreringsbaseret opdatering:

Du kan også udføre opdateringer af en hel række ved hjælp af en registrering. Følgende eksempel opdaterer en række i bogtabellen med en %ROWTYPE-post. Bemærk, at jeg bruger søgeordet ROW for at angive, at jeg opdaterer hele rækken med en registrering:

DECLARE
my_book books%ROWTYPE;
BEGIN
my_book.isbn :='1-123456-123-1';
my_book.title :='Fox Infotech Blogs';
my_book.summary :='Ræveeksempler';
my_book.author :='V. Kapoor';
my_book.page_count :=300;

OPDATERING bøger
SET ROW =my_book
WHERE isbn =my_book.isbn;
END;
/
Der er nogle begrænsninger for rekordbaserede opdateringer:

Du skal opdatere en hel række med ROW-syntaksen. Du kan ikke opdatere et undersæt af kolonner (selvom dette muligvis understøttes i fremtidige udgivelser). Alle felter, hvis værdier efterlades NULL, vil resultere i en NULL-værdi tildelt til den tilsvarende kolonne.
Du kan ikke udføre en opdatering ved hjælp af en underforespørgsel.
Og hvis du undrer dig, kan du ikke oprette en tabelkolonne kaldet ROW.

  1. Høj pladsforbrug Fra crfclust.bdb

  2. Beregn tidsforskellen mellem to rækker

  3. Oracle:betyder kolonnerækkefølgen noget i et indeks?

  4. Kørsel af SQL Server 2014 på en Azure Virtual Machine