私は160列以上のテーブルを持っており、PL/SQLプロシージャで各列を操作する必要があります。私はこのようなテーブルから行全体の記録を行います。名前ではなくインデックスでレコードの列を呼び出す
DECLARE
l_employee rec_employees%ROWTYPE;
COLUMN_AND_VALUE VARCHAR2(200);
BEGIN
SELECT *
INTO l_employee
FROM employees
WHERE employee_id = 100;
と私はを参照しなければならないので、今私はFOR LOOPで、このレコードのすべての列で仕事をしたいが、私は方法がわかりませんl_employee.id、l_employee.salary ...のような列名でレコードの各列を呼び出すことができます。l_employee [INDEX_OF_COLUMN]のように順番に参照することができます。また、作業している列の名前も取得できますか?ここでは、私はレコードとしたい例です:
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;
またはレコードを使用せずにそれを行うより良い方法はここですか?
大変ありがとうございました。私は悪い英語を本当に残念に思っています。私はあなたが私の質問を理解してくれることを願っています:)
これを理解するのに役立つことができますか?あなたは本当にすべての167の列を処理するつもりですか? "はい"の場合、処理中に明示的に 'カラム名'を与えなければなりません。私は各列のデータの処理が他の処理とは異なると考えています。 –
しかし、 'CURSOR C2はTABLE_NAME = 'EMPLOYEES'のところでは' ALL_TAB_COLUMNS'の中から選択したCOLUMN_NAMEを使用してテーブルのすべてのカラム名を得ることができます。 –