【发布时间】:2016-05-22 21:21:18
【问题描述】:
我有超过 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 列吗?如果是,那么在处理时,您肯定必须明确给出
column name。因为我认为每列数据的处理会有所不同。 -
但是,您可以使用 `CURSOR C2 is select COLUMN_NAME from
ALL_TAB_COLUMNSwhere TABLE_NAME ='EMPLOYEES'; 获取表的所有列名;