gpt4 book ai didi

plsql - 通过它的索引调用记录列,而不是名称

转载 作者:行者123 更新时间:2023-12-02 04:41:11 25 4
gpt4 key购买 nike

我有一个包含 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 循环处理该记录的所有列,但我不知道如何操作,因为我必须通过其列名引用记录的每一列,例如 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;

或者这是不使用记录的更好方法吗?

非常感谢,我真的很抱歉我的英语不好。我希望你理解我的问题:)

最佳答案

最后我在一些帮助下找到了这个解决方案。这正是我在这篇文章中所需要的,但后来我意识到这不是我的最佳方式,因为我有其他条件。

`DECLARE  
l_query VARCHAR2(32767) := 'SELECT * FROM employees where id=1';
l_theCursor INTEGER DEFAULT dbms_sql.open_cursor;
l_columnValue VARCHAR2(4000);
l_status INTEGER;
l_descTbl dbms_sql.desc_tab;
l_colCnt NUMBER;
BEGIN
dbms_sql.parse(l_theCursor,l_query,dbms_sql.native);
dbms_sql.describe_columns( l_theCursor, l_colCnt, l_descTbl);
FOR i IN 1 .. l_colCnt
LOOP
dbms_sql.define_column(l_theCursor, i, l_columnValue, 4000);
END LOOP;
l_status := dbms_sql.execute(l_theCursor);
WHILE ( dbms_sql.fetch_rows(l_theCursor) > 0 )
LOOP
FOR i IN 1 .. l_colCnt
LOOP
dbms_sql.column_value( l_theCursor, i, l_columnValue );
dbms_output.put_line( l_descTbl(i).col_name|| ': ' ||l_columnValue );
END LOOP;
END LOOP;
EXCEPTION
WHEN OTHERS THEN
dbms_sql.close_cursor( l_theCursor );
RAISE;
END; `

关于plsql - 通过它的索引调用记录列,而不是名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37364124/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com