Вы можете обернуть массив в структуру и затем вернуть экземпляр структуры. Я упоминаю об этом для полноты, это не то, что вы хотели бы сделать, так как это уродливо и есть лучшие альтернативы.
#include <stdio.h>
struct retval
{
int a[10];
};
struct retval test()
{
struct retval v = {{1, 5, 6}};
return v;
}
int main()
{
struct retval data = test();
printf("%d %d\n", data.a[1], data.a[2]);
}
Вы не можете выборочно применять другие условия, используя выражение регистра. В этом случае я думаю, что он особенно жалуется, когда попадает в <
, >=
или between
- все они не правы, а не то, что парсер ожидает увидеть там. (Он ожидает другого when
или else
или end
для первых двух; и end
для третьего.)
Вместо этого вы можете просто использовать логическую логику, что-то вроде:
[ 110]или из вашего последнего параграфа, возможно, последняя строка может быть:
or (:P_AccountType = 'A' and GLCC.SEGMENT2 BETWEEN '00000' AND '99999')
Я не уверен, что второе условие для 'P'
также нуждается в верхней границе; или действительно, если B
нужен нижний предел. Сложнее сказать по строкам. Случай A
может вообще не нуждаться в проверке диапазона. Хотя зависит от ваших данных.