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

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

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.02.2013, 16:11   #1
Dozent
Форумчанин
 
Регистрация: 21.05.2008
Сообщений: 495
По умолчанию UPDATE OR INSERT по нескольким таблицам в одной процедуре

Добрый день подскажите возможно ли так написать?
Есть 4 табилцы город, улица, дом, квартира
МОжно ли обработать примерно так в одно процедуре?

Код:
create or alter procedure PROC_INS_ADRES (
    FIN_NAME_CITY varchar(50),
	FIN_NAME_STREET varchar(50),
    FIN_NAME_HOUSE varchar(10),
    FIN_NAME_ROOM varchar(5))
	returns (
    RET_ID_CITY integer,
	RET_ID_STREET integer,
	RET_ID_DOM integer,
	RET_ID_ROOM integer)
as
begin
  UPDATE OR INSERT into CITY (city) values (:fin_name_city) matching (city) RETURNING id_city INTO :RET_ID_CITY;
  UPDATE OR INSERT into STREET (id_city, name) values (:ret_id_city, :fin_name_street) matching (name) RETURNING id_street INTO :RET_ID_STREET;
  UPDATE OR INSERT into HOUSE (id_street, nomer) values (:ret_id_street, :fin_name_house) matching (nomer) RETURNING id_dom INTO :RET_ID_DOM;
  UPDATE OR INSERT into DOM (id_dom, nomer) values (:ret_id_dom, :fin_name_room) matching (nomer);
end
Dozent вне форума Ответить с цитированием
Старый 21.02.2013, 16:40   #2
Dozent
Форумчанин
 
Регистрация: 21.05.2008
Сообщений: 495
По умолчанию

Вообще да всё получилось!!!

Код:
create or alter procedure PROC_INS_ADRES (
    FIN_NAME_CITY varchar(50),
    FIN_NAME_STREET varchar(50),
    FIN_NAME_HOUSE varchar(10),
    FIN_NAME_ROOM varchar(5))
returns (
    RET_ID_CITY integer,
    RET_ID_STREET integer,
    RET_ID_DOM integer,
    RET_ID_ROOM integer)
as
begin
  UPDATE OR INSERT into CITY (city) values (:fin_name_city) matching (city) RETURNING id_city INTO :RET_ID_CITY;
  UPDATE OR INSERT into STREET (id_city, name) values (:ret_id_city, :fin_name_street) matching (name) RETURNING id_street INTO :RET_ID_STREET;
  UPDATE OR INSERT into HOUSE (id_street, nomer) values (:ret_id_street, :fin_name_house) matching (nomer) RETURNING id_dom INTO :RET_ID_DOM;
  UPDATE OR INSERT into ROOM (id_dom, nomer) values (:ret_id_dom, :fin_name_room) matching (nomer);
end
Dozent вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Invalid insert or update value(s): object columns are constrained BarakudaX777 БД в Delphi 2 17.09.2012 08:28
UPDATE, INSERT, DELETE в DataGridView C# Ramirag Помощь студентам 3 04.09.2011 13:24
выполнение запросов(Insert,Update) Rio309 C# (си шарп) 1 20.03.2011 17:10
Объединить запрос к нескольким таблицам в один (php+MySql) Maxx PHP 17 23.08.2010 16:32
insert и update Tanusha SQL, базы данных 4 13.03.2009 14:47