Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.11.2011, 00:29   #1
Blondy
Участник клуба
 
Аватар для Blondy
 
Регистрация: 07.07.2009
Сообщений: 1,385
По умолчанию POSTGRE, проц. язык Pl/pg: вывести список оценок

Господа!
Я что-то уже ничего не понимаю в процедурном языке "Слона". Есть таблица "Declaration", где представлены код студента (student_code), код предмета (subject_id) и оценка по предмету (grade).

Пользователь вводит код студента, и ему выводится список предметов и оценок студента.

И все это мне надо написать на процедурном языке.
Две проблемы:
я не знаю, как в процедурном языке выводить несколько строчек. Написаной мной код цепляет только последнюю оценку данного студента в декларации и очень рад.

Код:
CREATE OR REPLACE FUNCTION otchenki_studenta (text)
RETURNS text AS
$BODY$
DECLARE
otsenki "Declaration" %ROWTYPE;
result text;
dannie "Student" %ROWTYPE;
BEGIN
SELECT INTO dannie * FROM "Student";
--------------proverka koda: esli net, vidat soobshenie ob oshibke-------
IF NOT FOUND THEN
	RAISE EXCEPTION 'Kood  %  not found', $1 ;
END IF;
----------------------------------------------------------------------------

---SELECT INTO otsenki * FROM "Declaration" WHERE "Declaration".student_code LIKE $1;
FOR otsenki IN SELECT * FROM "Declaration" WHERE "Declaration".student_code LIKE $1
LOOP
result=otsenki.subject_id||' '|| otsenki.grade||' '||dannie.second_name||'\n';
END LOOP; 

RETURN result;
END;$BODY$

LANGUAGE 'plpgsql';

--------------------------------vivod rezultata-------------- 
--SELECT  otsenki_studenta ('084556')
Вторая проблема - я не очень хорошо понимаю, переменная код предмета из таблицы "Declaration" хранит идентификационный номер записи в таблице "Teaching". А мне надо из этой таблицы обучения как-то вытянуть буквенный код предмета в результирующую выборку... А как его вытащить в процедурном языке тоже вопрос остается открытым.

Проконсультируйте меня, как оформить многостроковый вывод....
Как-то все это с помощью обычных Select решалось проще. А тут одна путаница.
"Все мы жаждем чудес. Чисто человеческое свойство." Carl Sagan
Blondy вне форума Ответить с цитированием
Старый 20.11.2011, 00:39   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

посмотрите пример
http://wiki.postgresql.org/wiki/Retu...gSQL_functions
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 20.11.2011 в 00:59.
Аватар вне форума Ответить с цитированием
Старый 20.11.2011, 02:20   #3
Blondy
Участник клуба
 
Аватар для Blondy
 
Регистрация: 07.07.2009
Сообщений: 1,385
По умолчанию

Спасибо Вам, ссылка хорошая.
Но я пока не добилась необходимого результата..... Подумать надо)))
"Все мы жаждем чудес. Чисто человеческое свойство." Carl Sagan
Blondy вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
односвязный список(язык Си) bars1984 Помощь студентам 6 15.05.2012 11:25
Линейный список. Язык С. tutis Помощь студентам 0 04.06.2011 21:05
Как вывести список ссылок trad Общие вопросы C/C++ 0 14.12.2010 15:23
Вывести список файлов assch Общие вопросы C/C++ 1 21.10.2010 03:16
Вывести 5 оценок Европеец Общие вопросы C/C++ 3 14.05.2010 09:39