Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / хранимая процедура. / 6 сообщений из 6, страница 1 из 1
08.01.2014, 16:46:32
    #38519635
Grime93
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хранимая процедура.
такой вопрос.
корректно ли написание хп и всё ли верно?

Код: sql
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.
CREATE PROCEDURE proc_p (ID integer)
RETURNS(FIO varchar(90), contacts varchar(600))
AS
DECLARE VARIABLE fam varchar(30);
DECLARE VARIABLE imi varchar (30);
DECLARE VARIABLE otch varchar (30);
DECLARE VARIABLE novi_kont varchar (45);
DECLARE VARIABLE nast_tip smallint;
DECLARE VARIABLE pred_tip smallint;
DECLARE VARIABLE separ varchar (1);
BEGIN
  SELECT familia from people p inner join fam_spr f on p.familia=f.ID_fam where :ID=p.ID into fam;
  SELECT imia from people p inner join im_spr i on p.imia=i.ID_im where :ID=p.ID into imi;
  SELECT otchestvo from people p inner join otch_spr o on p.otchestvo=o.ID_otch where :ID=p.ID into otch;
  FIO=fam||' '||imi||' '||otch;
  contacts='';
SUSPEND;

FOR 
SELECT a.contact,a.types1 from contacts a inner join kontact_people k_p on a.ID_kont=k_p.ID_cont
WHERE :ID=k_p.ID_peopl into novi_kont, nast_tip
DO
BEGIN
  IF (nast_tip!=:pred_tip) THEN
  separ=';';
ELSE
  separ=',';
IF (contacts <> '') THEN
contacts=contacts||separ||novi_kont;
ELSE
  contacts=novi_kont;
  pred_tip=:nast_tip;
SUSPEND;
END
END;
...
Рейтинг: 0 / 0
08.01.2014, 17:00:52
    #38519645
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хранимая процедура.
Grime93,

засовывать фамилии, имена и отчества в отдельные справочники по моему перебор. Собрать ФИО можно и одним запросом.

Код: sql
1.
2.
SELECT a.contact,a.types1 from contacts a inner join kontact_people k_p on a.ID_kont=k_p.ID_cont
WHERE :ID=k_p.ID_peopl into novi_kont, nast_tip



без сортировки твоя дальнейшая искусственная группировка обломается. А вообще советую побольше подумать над структурой БД
...
Рейтинг: 0 / 0
08.01.2014, 17:19:19
    #38519669
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хранимая процедура.
Симонов ДенисСобрать ФИО можно и одним запросом
Но результат будет отличаться от результата приведённой процедуры. А поскольку аффтар не
сказал какой результат ему нужен...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
08.01.2014, 17:35:39
    #38519692
Grime93
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хранимая процедура.
Написать хранимую процедуру, которая возвращает набор записей, состоящих из ФИО человека и список контактов. Список контактов является строкой, состоящей из всех контактов, разделенных запятыми. Контакты в строчку выводится по группам: сначала телефоны, потом адреса эл. почты и т. д. Группы разделяются точкой с запятой. Идентификатор человека, для которого формируется список контактов, задается параметром процедуры.

вот какое задание было.
...
Рейтинг: 0 / 0
08.01.2014, 17:40:32
    #38519696
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хранимая процедура.
Grime93,

я уже сказал без сортировки по типу контактов получится фигня. А вообще GROUP BY + LIST
...
Рейтинг: 0 / 0
08.01.2014, 17:47:13
    #38519703
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хранимая процедура.
Grime93вот какое задание было.
В таком случае ты в стартовом посте написал полную фигню.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / хранимая процедура. / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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