Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / ошибка в цикле / 3 сообщений из 3, страница 1 из 1
03.09.2005, 22:59
    #33250076
gryzz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка в цикле
есть следующая ХП
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
CREATE OR REPLACE FUNCTION public.view_foto(int4)
  RETURNS text[] AS ' 
    DECLARE 
        foto_id_ ALIAS FOR $1; 
        res text[]:=\'{}\';
	cid1_ integer;
	cid2_ integer;
	cid3_ integer;
	name_ text;
	foto_type_ text;
	keywords_ text;
	description_ text;
	date_ text;
	views_ integer;
	mark_ integer;
	sum_mark_ integer:=0;
	i integer:=0;
	row_data comments%ROWTYPE;
    BEGIN 
        select category_id_1,category_id_2,category_id_3,name,foto_type,keywords,description,date,views from foto where id=foto_id_ into cid1_,cid2_,cid3_,name_,foto_type_,keywords_,description_,date_,views_;
	res[0]:=cid1_;
	res[1]:=cid2_;
	res[2]:=cid3_;
	res[3]:=name_;
	res[4]:=foto_type_;
	res[5]:=keywords_;
	res[6]:=description_;
	res[7]:=date_;
	res[8]:=views_;
	FOR row_mark IN SELECT * FROM comments WHERE foto_id=foto_id_ LOOP
		i:=i+1;
		sum_mark_:=sum_mark_+row_mark.mark;
	END LOOP;
	RETURN res; 
    END; 
'
  LANGUAGE 'plpgsql';
при выполнении выдает ошибку
ERROR: missing ".." at end of SQL expression
CONTEXT: compile of PL/pgSQL function "view_foto" near line 29
вроде ошибка в условии цикла... но найти не могу... должно ж оно по результату выборки идти, а не только по условию типа 1..44
...
Рейтинг: 0 / 0
04.09.2005, 12:40
    #33250274
XM
XM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка в цикле
gryzz wrote:
> есть следующая ХП
> ...
>
> при выполнении выдает ошибку
> ERROR: missing ".." at end of SQL expression
> CONTEXT: compile of PL/pgSQL function "view_foto" near line 29
> вроде ошибка в условии цикла... но найти не могу... должно ж оно по
> результату выборки идти, а не только по условию типа 1..44
> Тема <http://www.sql.ru/forum/actualthread.aspx?tid=213836> Ответить
> <http://www.sql.ru/forum/actualpost.aspx?tid=213836>
>

Ну ошибка связана с именем переменной - объявлена row_data а
используется row_mark

И вообще, не проще ли было эту ботву заменить на один запрос типа:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
SELECT category_id_1, category_id_2,category_id_3, 
name,foto_type,keywords,description, date,views
FROM  foto
LEFT OUTER JOIN
   (SELECT foto_id, count(*) as total_comments,
	sum(comments.mark) as total_mark
     FROM comments
     WHERE foto_id=  :foto_id_
   ) AS temp_stats
ON (id = foto_id)
WHERE id= :foto_id_

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
05.09.2005, 00:11
    #33250559
gryzz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка в цикле
спасибо... все работает
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / ошибка в цикле / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]