Um Sie zu beantworten Frage:
Sie müssen jede Spalte mit zum Beispiel aktualisieren: ColumnA = recordName.ColumnA
, Sie können nicht eine ganze Zeile auf einmal einfügen.
Ihnen einen Rat geben:
Die SELECT INTO
ist irgendwie gefährlich Ich denke, becasue wenn Ihr Tisch wird versuchen, leer Sie einen NULL-Wert zu legen, was in dem folgenden Fehler führen: ORA-01403: no data found
.
Dieser Fehler kann in größeren Projekten nur schwer gefunden werden.
Vielleicht gibt Ihnen dieses Beispiel eine Idee:
Hier verwende ich einen Cursor, um die Zeilen aus einer Tabelle zu holen.
Da ich nicht durch sie durchschlinge wird nur der erste gefundene Datensatz genommen und in rEmployer
gespeichert.
So rEmpoyer
enthält alle Daten aus der ersten Zeilennummer aus dieser Tabelle.
Ich benutze einen Boolean, um zu überprüfen, ob es Daten gibt, und wenn wir es getan haben, setzen wir es auf TRUE
.
Danach aktualisieren wir die Tabelle.
DECLARE
CURSOR cEmployer IS
SELECT *
FROM Employer;
rEmployer cEmployer%ROWTYPE;
fFound BOOLEAN := FALSE;
BEGIN
-- By not using a loop, only the first record is taken.
OPEN cEmployer;
FETCH cEmployer INTO rEmployer;
IF cEmployer%FOUND THEN
-- There is a row in the table 'Employer'.
fFound := TRUE;
END IF;
CLOSE cTemp;
-- Modify some values and add update the row:
IF fFound THEN
-- MOdify some values.
rEmployer.Name := 'ABC';
rEmployer.Age := '99';
-- Update the table.
UPDATE Employer
SET Name = rEmployer.Name,
Age = rEmployer.Age
WHERE EmployerId = rEmployer.EmployerId;
COMMIT;
END IF;
END;
/
Bitte vollständige Frage –
Die Frage ist bereits aktualisiert. –