我从表some_table
中选择了一行到一个rowtype变量l_current
。现在我想遍历该变量中从第一个到最后一个的字段以及门字段名称和值。
在下面的代码中,我写了一篇评论部分,我想用plsql做什么,但是找不到怎么做。
declare
l_current some_table%rowtype;
begin
for i in l_records.first .. l_records.last
loop
select *
into l_current
from some_table
where id = l_records(i).id;
--*******************
for each field in l_current
loop
a := field.name;
b := field.value;
end loop;
--*******************
end loop;
end;
答案 0 :(得分:0)
因此经过一些研究后,我设法完成了我想要的工作,但使用DBMS_SQL包的方式完全不同。以下是一个工作示例的片段:
l_sql := '';
l_sql := l_sql || 'select * ';
l_sql := l_sql || ' from some_table where id = ' || l_records(i).ekd_id;
l_cursorID := DBMS_SQL.OPEN_CURSOR;
dbms_sql.parse( l_cursorID, l_sql, dbms_sql.native );
dbms_sql.describe_columns( l_cursorID, l_column_count, l_descTbl );
for j in 1..l_column_count
loop
dbms_sql.define_column( l_cursorID, j, l_columnValue, 2000 );
l_key := l_descTbl(j).col_name;
l_table(j + (l_counter * l_column_count)).kre_id := l_records(i).kre_id; --i + (l_counter * l_column_count)
l_table(j + (l_counter * l_column_count)).field_id := j;
l_table(j + (l_counter * l_column_count)).field_name := l_key;
end loop;
l_status := dbms_sql.execute(l_cursorID);
l_status := DBMS_SQL.FETCH_ROWS(l_cursorID);
for k in 1..l_column_count
loop
dbms_sql.column_value( l_cursorID, k, l_columnValue );
l_value := l_columnValue;
l_table(k + (l_counter * l_column_count)).field_value1 := l_value;
end loop;
DBMS_SQL.CLOSE_CURSOR(l_cursorID);
希望有人会发现这很有用。