从for循环动态命名变量

时间:2018-02-16 08:43:34

标签: oracle

当我收到procedure时,我正在oracle中写variable as rowtype

我正在尝试achieve基于loop

的测试条件
FOR idx in 1..10 LOOP
   IF POST.SI_AMOUNT||idex <> 0 THEN
   NULL;
   END IF; 
END LOOP;

我在表中有这样的列

 SI_AMOUNT1,

 SI_AMOUNT2,

 SI_AMOUNT3,

 SI_AMOUNT4,

 SI_AMOUNT5,

 SI_AMOUNT6,

 SI_AMOUNT7,

 SI_AMOUNT8,

 SI_AMOUNT9,

 SI_AMOUNT10

我想通过使用for循环检查所有列值。这在甲骨文有可能吗?

1 个答案:

答案 0 :(得分:1)

首先,您的表格设计看起来违反了First normal form。如果你修复了这个错误,我想,你将不再需要以这种方式迭代抛出一列。

接下来,您编写的语句POST.SI_AMOUNT||idex <> 0表示获取POST.SI_AMOUNT变量的值,将其与idex变量的值连接,并使用隐式将连接结果与零进行比较数据类型转换

最后,PL / SQL与其他非脚本语言一样,无法迭代抛出变量列表。没有任何能力比直接使用10个IF条件更简单,但正如我所说,最好的方法是重新设计表格并完全消除这种需求。