我有一个存储在字符串中的列列表:
str VARCHAR2(100) = 'col1, col2, col3';
字符串而我要执行的操作如:
SELECT <columns from str> FROM source_table;
型我需要知道如何从str中访问这些列,并且可以用来访问只包含所需列的源表。有什么办法吗?
zyfwsgd61#
试试这个小例子来帮助你理解它。创建表格
CREATE TABLE src_tbl ( COL1 NUMBER, COL2 VARCHAR2(10 BYTE) )
字符串再加几行
Insert into src_tbl (COL1, COL2) Values (1, 'item1'); Insert into src_tbl (COL1, COL2) Values (2, 'item2'); COMMIT;
型运行这个块,它在变量中定义一个列列表,动态构建查询,然后运行它,将输出放入一个记录中,然后打印。注意这个例子非常简单,只适用于一个匹配的记录。要返回多条记录,您需要返回到一个集合中,但这超出了本文的范围。
declare col_list VARCHAR2(100) := 'col2, col1'; stmt varchar2(500); src_tbl_rec src_tbl%ROWTYPE; begin stmt := 'SELECT '|| col_list || ' from src_tbl where col1 = 1'; execute immediate stmt into src_tbl_rec; dbms_output.put_line(src_tbl_rec.col1||' - '||src_tbl_rec.col2); end;
型产出
1条答案
按热度按时间zyfwsgd61#
试试这个小例子来帮助你理解它。
创建表格
字符串
再加几行
型
运行这个块,它在变量中定义一个列列表,动态构建查询,然后运行它,将输出放入一个记录中,然后打印。
注意这个例子非常简单,只适用于一个匹配的记录。要返回多条记录,您需要返回到一个集合中,但这超出了本文的范围。
型
产出