17.02.2007 14:31
Pblcb
 
Клиенту понадобилось в инв.описи видеть баркоды товаров, я добавил в запрос в репортах такой вот вычисляемый столбец:
Код:
function CF_barcodeFormula return char is
cursor barcodes(art char) is
	select barcode
	from Supermag.smStoreUnits
	where article = Art;
bar_list varchar2(10000);
begin
	bar_list := '';
	
	for bar in barcodes(:article) loop			
		bar_list := bar_list  || chr(10) || ' - ' || bar.Barcode;			
	end loop;	
	bar_list := ltrim( bar_list, chr(10) ); 
	
	return ( bar_list );
/*exception
	when others then return '';*/
end;
Если в списке появится товар с несколькими баркодами, возникает исключительная ситуация. Помогите понять что я упустил?
17.02.2007 16:09
OlegON
 
Какая именно исключительная? Трудно по такому огрызку что-то сказать. Art у тебя откуда берется? Их там не несколько? Иными словами, либимая ошибка - возвращать в одиночные подзапросы несколько строк. Все "=" проверь. Чтобы нигде несколько строк не было.
17.02.2007 16:44
Pblcb
 
olegon, формула для каждой строки запроса расчитывается: barcodes(:article).

А исключительная ситуация для репортов у меня всегда одна и та же - REP-1401 =(

И запрос конечно же не одиночный... Я ж курсор в цикле обабатываю...
17.02.2007 17:04
OlegON
 
Я, к сожалению, не спец в репортсах, не люблю их. Просто в Art, например, должно быть одно значение, а не массив... Трудно сказать, что еще может быть. Погоди, в понедельник может inna подскажет, она разбирается...
17.02.2007 17:21
Pblcb
 
olegon, спасибо ))) Инвентаризация завтра )
17.02.2007 17:26
OlegON
 
Ну... Репортер попробовать я всем предлагал...
19.02.2007 10:19
inna
 
да тут дело не в репортсе. Я не вижу не открытия курсора не закрытия. Функция вообще то компилится? Функция описана как char, а возвращет varchar2. Может быть проблема с длинной.
olegon, спасибо за комплимент (приятно), но я ту далеко не едиственный и не самый лучший специалист.
19.02.2007 11:43
kadr
 
Цитата:
inna Я не вижу не открытия курсора не закрытия.
ну курсор открывается неявно при начале цикла
Цитата:
inna Может быть проблема с длинной.
у меня тоже сложилось такое впечатление

Цитата:
Pblcb REP-1401 =(
не все знают наизусть описание опишибки по её коду, текст ошибки поможет уйти от гадания на кофейной гуще
19.02.2007 11:46
inna
 
все таки мне кажется лучше открывать и закрывать курсор. И ставить exception. И связь если идет одна ко многим, то не клеить переменную а выделять группу в репортсе. Но может это просто навязанный мне стиль конечно.
20.02.2007 12:37
Pblcb
 
Inna, насколько я понимаю, проблемы с длинной возвращаемой строки, начинаются с 255 символов. а на практике в этой базе нет товаров с более чем 4-мя штрихкодами. А значит длина результата не превосходит 60-ти символов.
Часовой пояс GMT +3, время: 17:44.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.