我正在用PL/pgSQL开发一些存储过程,其中一些给我带来了一些问题.我正在开发的存储过程通过参数接收一个数组,我在FOR循环中使用它来获取它的所有元素.为了定义FOR循环的上限,我使用了array_length函数.
FOR i IN 1..array_length(array,1) LOOP
--array[i] something in here
END LOOP;
当我给存储过程一个空数组时,问题就出现了.存储过程不是不进入循环,而是简单地返回一个错误,指出FOR循环的上限为NULL.不是应该是0吗?
我的FOR循环有什么问题吗?
当在其他循环中使用空数组而不使用空边界时?
Note:我知道我总是可以在循环之前使用一个条件,比如:
IF array_length(array,1) IS NOT NULL THEN
但问题是:这个过程应该能在最短的时间内处理数千个电话.因此,我不想让处理过程增加不必要的开销.我只是想看看是否有办法在循环中"循环"一个空array.