Ich habe Tabelle mit mehr als 160 Spalten und ich muss mit jeder Spalte im PL/SQL-Verfahren arbeiten. Ich mache eine Aufzeichnung der gesamten Zeile aus der Tabelle wie folgt aus:Aufruf von Spalten des Datensatzes von seinem Index, nicht Name
DECLARE
l_employee rec_employees%ROWTYPE;
COLUMN_AND_VALUE VARCHAR2(200);
BEGIN
SELECT *
INTO l_employee
FROM employees
WHERE employee_id = 100;
und jetzt will ich mit allen Spalten dieser Datensatz mit FOR-Schleife arbeiten, aber ich weiß nicht wie, weil ich beziehen, jede Spalte des Datensatzes nach ihrem Spaltennamen wie l_employee.id, l_employee.salary, .... ist es möglich, auf sie in der Reihenfolge wie l_employee [INDEX_OF_COLUMN] zu verweisen und auch den Namen der Spalte zu erhalten, mit der ich arbeite? Hier ist das Beispiel, das ich mit Datensatz machen möchte:
FOR INDEX_OF_COLUMN IN 1 .. 167 LOOP
COLUMN_AND_VALUE := l_employee[INDEX_OF_COLUMN].COLUMN_NAME || ': ' || l_employee[INDEX_OF_COLUMN].VALUE_OF_COLUMN
-- I know those commands don't work, but I need something like that
END LOOP;
Oder ist hier besser Weg, es ohne Verwendung von Rekord zu tun?
Vielen Dank und es tut mir wirklich leid für mein schlechtes Englisch. Ich hoffe du hast meine Frage verstanden :)
Können Sie uns bitte helfen, die Verwendung dieses zu verstehen? Werden Sie wirklich alle 167 Spalten verarbeiten? Wenn ja, dann müssen Sie während der Bearbeitung unbedingt den 'Spaltennamen' explizit angeben. Ich denke, dass die Verarbeitung der Daten jeder Spalte anders sein wird als die der anderen. –
Sie können jedoch alle Spaltennamen für die Tabelle mit 'CURSOR C2 erhalten. Wählen Sie COLUMN_NAME aus' ALL_TAB_COLUMNS' aus. TABLE_NAME = 'EMPLOYEES'; –