[ТЕМА ЗАКРЫТА]
11.02.2012 08:55
john_the_ripper
 
Пытаюсь дернуть данные в Report Builder из доп. параметров карточки товара.

article и propid в таблице имеют тип VARCHAR2(20)
propval имеет тип VARCHAR2(4000)

при попытке отработать такой код, выдает:
ORA-01422: exact fetch returns more than requested number of rows

function CF_DOP_PARAMFormula return char is
res supermag.smcardproperties.propval%TYPE;

begin
SELECT PROPVAL into res
FROM supermag.smcardproperties
where article = '002229'
and propid = '11';
return res;
end;

Хотя через тотже SQL Developer отрабатывает такой запрос нормально
11.02.2012 08:58
OlegON
 
Сравни то, что пихаешь в SQL Developer с тем, что показал нам. Уверен, что в одном случае функция, в другом - просто запрос, возвращающий несколько строк. Вчитайся, что тебе в ошибке пишет.
11.02.2012 09:33
john_the_ripper
 
Запрос в SQL Developer абсолютно идентичен. Возвращает он одну единственную строку.

Почему он супермагу возвращает несколько строк, а SQL Developer'у одну(тупо значение ячейки), мне вообще непонятно, поэтому и прошу помощи :russian_ru:
11.02.2012 09:46
OlegON
 
если не хочешь показать запрос, то выполняй в девелопере функцию, а не запрос гоняй.
11.02.2012 09:57
john_the_ripper
 
Что значит не хочу показать запрос? Вот он - запрос в девелопере:

SQL код:
SELECT supermag.smcardproperties.PROPVAL,
  
supermag.smcardproperties.*
FROM supermag.smcardproperties
WHERE supermag
.smcardproperties.ARTICLE '002229'
AND supermag.smcardproperties.PROPID    '11' 
Добавлено через 5 минут 37 секунд
Забил следующую функцию в SQL Developer и всё нормально отработало. Мистика :)

SQL код:
FUNCTION FUNCTION1 RETURN VARCHAR2 IS
res supermag
.smcardproperties.propval%TYPE;
BEGIN
  SELECT PROPVAL into res 
  FROM supermag
.smcardproperties 
  where article 
'002229'
  
and propid '11';
  return 
res;
END
11.02.2012 10:05
OlegON
 
Запутал окончательно.
Перейди в SQL Plus и покажи все цитированием.
11.02.2012 10:47
john_the_ripper
 
SQL код:
SQLSELECT PROPVAL FROM supermag.smcardproperties where article '002229' and propid '11';

PROPVAL
------------------------------------------------------------------------------------------------
ИП "Пупкин"

SQL
Добавлено через 19 минут 16 секунд
SQL код:
SQL> DECLARE
  
2  res supermag.smcardproperties.propval%TYPE;
  
3  BEGIN
  4  SELECT PROPVAL into res FROM supermag
.smcardproperties where article '002229' and propid '1
1'
;
  
5  dbms_output.put_line(res);
  
6  END;
  
7  /
ИП "Пупкин"

PL/SQL procedure successfully completed.

SQL
11.02.2012 11:17
OlegON
 
а из функции в SQL Plus?

Добавлено через 6 минут 41 секунду
Или "все заработало" это означало закрытие темы?
11.02.2012 11:56
john_the_ripper
 
Да в том то и дело, что в SQL Plus'е нормально отрабатывает и возвращает значение, а тот же самый код в при запуске из супермага вызывает вышеуказанную ошибку. Мииистииикаааа =\
11.02.2012 12:12
whitewizard
 
с Бизнес-анализа запускаешь?
тогда создай функцию и запускай её
11.02.2012 12:17
john_the_ripper
 
Это запрос для вывода в ценник доп. параметра карточки.
Соответственно запускаю через печать ценника.

Раз код отдельно отрабатывает, есть мысль что проблема с возвращением значения из функции.
Но уже и varchar2 выставлял возвращаемому значению в функции, один черт не работает. Я в тупике.
11.02.2012 12:26
vdm
 
Может в reports максимальная длина возвращаемой строки (в свойствах функции - 'Ширина') недостаточна?
Там оно вручную ставится, независимо от ограничений для типа возвращаемого res.
11.02.2012 15:03
OlegON
 
Я предлагаю во избежание необходимости строить догадки сделать функцию, после чего сделать селект из нее в SQL Plus и селект из нее же в репортсах... Думаю, что ТС что-то не с тем сравнивает и в итоге скрытое от нас и порождает ошибку.
12.02.2012 09:39
john_the_ripper
 
Я прям в замешательстве нахожусь. Удалил эту функцию и всё что с ней связано из этикетки, компилю репорт, подсовываю супермагу, теперь он ругается на другую функцию по такойже ошибке, при том что эта функция работала и я не трогал её вообще.
12.02.2012 11:20
john_the_ripper
 
В общем как так получилось не знаю, но я тупо не хотел вчера видеть что ошибка не в этой функции, а в функции отображения штрихкода :)) Запрос на получение штрихкода запинался действительно из-за возвращаемых строк, что поборолом rownum'ом и всё в жизни наладилось :)

Будьте внимательны господа!) Если не получается что-то, то нужно немного отдохнуть и заняться снова этим!)
12.02.2012 11:31
OlegON
 
А я и предлагал цитировать, а не басни рассказывать...
Опции темы


Часовой пояс GMT +3, время: 01:53.

 

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