Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Группа процедур и TRAN  [new]
Виктор_sql
Member

Откуда:
Сообщений: 99
Здравствуйте, есть вопрос.
Есть группа таблиц, описывающая сущность объекта. Если объект имеет простой тип, то используется всего одна основная таблица, (где основные атрибуты объекта). Если объект сложнее, то используются дополнительные таблицы (с доп.атрибутами), связанные FK с основной таблицей. В некоторых случаях доп.таблицы нужны, в некоторых нет. Атрибутов в каждой много, поэтому соответственно, есть серверная проц-ра, предназначенная для редактирования атрибутов в основной таблице. И есть прочие проц-ры, предназначенные для редактирования таблиц с доп.атрибутами.
Как реализовать вызов с клиентского приложения набора таких процедур в единой транзакции ?
Или написать общую про-ру, объединяющую десятки параметров, которые получат соответствующие таблицы ? Вариант не очень.
При задании на клиенте вызова процедуры перечень параметров будет велик, большая часть из которых может не понадобится в разных случаях.
Ничего не приходит в голову, кроме как формировать на клиенте @SQL nvarchar(4000), куда вставить EXEC Proc1 P1, Pn.. Exec Procn P1, Pn и выполнять это на сервере с помощью sp_executesql, где разобрать уже, что там в @SQL есть. И sp_executesql поместить в BEGIN TRANSACTION..COMMIT TRANSACTION.
Надеюсь, что сформулировал вопрос внятно.
30 окт 13, 07:54    [15050201]     Ответить | Цитировать Сообщить модератору
 Re: Группа процедур и TRAN  [new]
Сон Веры Павловны
Member

Откуда:
Сообщений: 6262
Выполнять на клиенте все требуемые процедуры в контексте одного соединения. У клиентских компонентов/классов, инкапсулирующих соединение с сервером, обычно есть соответствующие методы работы с транзакциями. Что это в вашем случае - не могу знать, т.к. платформа реализации клиентского приложения не озвучена.
30 окт 13, 08:24    [15050237]     Ответить | Цитировать Сообщить модератору
 Re: Группа процедур и TRAN  [new]
Виктор_sql
Member

Откуда:
Сообщений: 99
Клиент собирается на Borland Developer Studio Version 10
Что то еще пришла идея по вопросу. Может create proc делать ? забирая параметры с клиента.
Т.е. зная, к какой таблице относится атрибут(указывая кроме значения атрибута еще и его принадлежность), в создаваемую и компилируемую процедуру подтягивать соответствующие серверные проц-ры ? Правда, создание проц-р по подобному запросу с клиента насколько широкая практика ?
30 окт 13, 09:16    [15050403]     Ответить | Цитировать Сообщить модератору
 Re: Группа процедур и TRAN  [new]
LexusR
Member

Откуда: Novosibirsk
Сообщений: 1887
можно на клиенте формировать один xml - параметр конкретный для каждого типа объекта
и взывать общую диспетчерскую процедуру с параметром типа объекта и параметрами
а уже она будет вызывать конкретный обработчик для каждого типа
CREATE PROCEDURE RouterByType @TypeID varchar(50), @params xml
AS
	BEGIN
		IF @TypeID = 'Type1'
			exec ProcForType1 @params
		ELSE IF 	@TypeID = 'Type2'
			exec ProcForType2 @params
		ELSE IF 	@TypeID = 'Type3'
			exec ProcForType3 @params
       ......			
	END
	
CREATE PROCEDURE ProcForType1 @params xml
BEGIN
	-- разбор конкретных параметров для данного типа
	-- выполнение конкретных операций для данного типа
END
30 окт 13, 09:17    [15050408]     Ответить | Цитировать Сообщить модератору
 Re: Группа процедур и TRAN  [new]
LexusR
Member

Откуда: Novosibirsk
Сообщений: 1887
общие для всех объектов параметры и операции можно обрабатывать в головной процедуре
30 окт 13, 09:20    [15050420]     Ответить | Цитировать Сообщить модератору
 Re: Группа процедур и TRAN  [new]
Сон Веры Павловны
Member

Откуда:
Сообщений: 6262
Виктор_sql
Что то еще пришла идея по вопросу. Может create proc делать ?

Создается впечатление, что вам нечего делать, и от нечего делать вы ищите себе приключений. Нужная последовательность вызовов процедур в клиентском [объектно-ориентрованном] коде на ЯВУ выстраивается и поддерживается намного легче, чем в T-SQL. Вы не умеете управлять с клиента транзакциями? Или вызывать процедуры в контексте одного коннекта?
30 окт 13, 09:44    [15050517]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить