powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / ошибка в цикле
3 сообщений из 3, страница 1 из 1
ошибка в цикле
    #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
ошибка в цикле
    #33250274
Фотография 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
ошибка в цикле
    #33250559
gryzz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спасибо... все работает
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / ошибка в цикле
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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