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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.06.2012, 08:15   #1
Kioto
Пользователь
 
Регистрация: 04.04.2012
Сообщений: 11
По умолчанию pl/sql процедуры

Добрый день господа. Перейду сразу к делу:
имеется 6 таблиц (table1,table1..table6), каждая таблица имеет приблезительно равное кол-тво столбцов по 4, к каждой таблице написал по три процедуры (Процедура Insert, update, delete), получается 18 процедур в общем. Соответственно все изменения провожу с помощью данных процедур. Вопрос следующий: никак не удается написать 3 процедуры, с помощью которых можно было бы управлять нижестоящями. Например:
- Inserts_proc (контроль всеми процедурами insert, обращение к каждой индивидуально или ко всем, ввод данных)
- updates_proc
- deletes_proc
есть ли какой пример или мысли по этому поводу? заранее спасибо
Kioto вне форума Ответить с цитированием
Старый 19.06.2012, 10:09   #2
IliaIT
Форумчанин
 
Аватар для IliaIT
 
Регистрация: 17.03.2009
Сообщений: 977
По умолчанию

есть мысль что надо использовать всего 3 процедуры. судя по тому что ты хочешь 18 процедур объединить в 1 то наверняка входные и выходные параметры у тебя одинаковые, а различие только в названиях полей и таблиц.
то есть создавать запрос динамически посредством contact. Если в mysql то как-то так получиться.
Код:
-- --------------------------------------------------------------------------------
-- Routine DDL
-- Note: comments before and after the routine body will not be stored by the server
-- --------------------------------------------------------------------------------
DELIMITER $$

CREATE DEFINER=`Ap_date`@`192.168.0.11` PROCEDURE `update_A_par`
(IN S_base varchar(30),IN S1 float(12,2), IN s2 varchar(20),IN s3 varchar(10), 
IN S4 int(3),IN S5 int(3), IN S6 int(3), IN S9 int(1), in S2_d date,in S2_t time)
BEGIN
    declare ResString int;
        SET @Res_base1 =CONCAT("INSERT INTO `ah`.",S_base," 
(`kod`, `unitnum`, `id_param`, `data`,`time`, `val`)
 VALUES (",s4,",",s5,",",s6,",'",S2_d,"','",S2_t,"', ",S1,")");
        PREPARE ins_pas FROM @Res_base1;
        EXECUTE ins_pas ;
END
тут как параметр передаётся имя таблицы и куча переменных, так же можно добавить исходящие переменные. в общем тут покопай в сторону CONCAT и PREPARE если у тебя другая база данных. наверняка есть аналоги.
грубо говоря CONCAT собирает любую строку состоящую из переменных, а PREPARE это символьное выражение переделавает в запрос, то есть говорит что это не просто строка, а запрос sql.

если же у тебя все запросы разные и унифицировать их нецелесообразно, то можно просто всё записать в кучу одной процедуры и сделать дополнительный параметр типа запроса а для определения внутри процедуры использовать конструкцию if или даже Сase. итого получиться всего 3 процедуры, или даже одна если хочется всё объединить
Интуитивно понятный интерфейс - это такой интерфейс, для работы с которым нужна недюжинная интуиция.
IliaIT вне форума Ответить с цитированием
Старый 19.06.2012, 10:24   #3
Kioto
Пользователь
 
Регистрация: 04.04.2012
Сообщений: 11
По умолчанию

Благодарю за совет, сейчас все попробую сделать. О результатах отпишусь
Kioto вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
вызов хранимой процедуры sql из с# emdroof Базы данных (ADO.NET, LinqToSql, ORM Entity Framework, NHibernate) 4 14.05.2012 16:57
SQL. Хранимые процедуры Torichka Помощь студентам 4 29.11.2011 12:20
Хранимые процедуры SQL Server FreshBreeze SQL, базы данных 6 08.09.2009 00:14
Триггеры и хранимые процедуры SQL FreshBreeze Помощь студентам 6 10.05.2009 14:37
Создание процедуры на SQL Skyline20000 SQL, базы данных 0 31.03.2009 16:57