因为项目需要,有一段select语句中的列,想实现可配置,因此就需要用for循环。但尝试之后发现select语句中是不允许放for循环的。
因此就有了本篇文章。仅是自己在做项目中的一点小心得。欢迎各位大神指正。
需求 select column1,column2,column3,column41,column42,column43,column44...... from table1 where [条件]。其中column41,column42,column43,column44......是想放在另一个表中维护的,因此这些列有可能会增加、减少、改变。
现在我们开始写这部分代码。
首先我们需要定义一个变量,来存放拼接好的SQL语句。
V_SQL_STR varchar2(30000);
接下来就是拼接语句:
V_SQL_STR:=CONCAT(V_SQL_STR,'SELECT ');
V_SQL_STR:=CONCAT(V_SQL_STR,COLUMN1);
V_SQL_STR:=CONCAT(V_SQL_STR,COLUMN2);
V_SQL_STR:=CONCAT(V_SQL_STR,COLUMN3);
--开始拼接Column41往后的列
OPEN TDCV FOR --打开游标
SELECT ITEM_CD
FROM table2
WHERE [条件];
FETCH TDCV BULK COLLECT INTO ITEM_CDS;
CLOSE TDCV;
IF ITEM_CDS.COUNT > 0
THEN