powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / хранимая процедура.
6 сообщений из 6, страница 1 из 1
хранимая процедура.
    #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
хранимая процедура.
    #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
хранимая процедура.
    #38519669
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисСобрать ФИО можно и одним запросом
Но результат будет отличаться от результата приведённой процедуры. А поскольку аффтар не
сказал какой результат ему нужен...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
хранимая процедура.
    #38519692
Grime93
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Написать хранимую процедуру, которая возвращает набор записей, состоящих из ФИО человека и список контактов. Список контактов является строкой, состоящей из всех контактов, разделенных запятыми. Контакты в строчку выводится по группам: сначала телефоны, потом адреса эл. почты и т. д. Группы разделяются точкой с запятой. Идентификатор человека, для которого формируется список контактов, задается параметром процедуры.

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

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


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