Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 [2]      все
 Re: An INSERT EXEC statement cannot be nested для системной процедуры  [new]
GreenSunrise
Member

Откуда:
Сообщений: 12310
Можно сделать с весами не серверов, а логинов. Добавить в таблицы поле - "вес" или приоритет логина. Целочисленное поле. При изменениях-добавлениях данных устанавливать это поле, исходя из логина текущего пользователя.

Тогда и выделенный арбитражный сервер не понадобится. Кем залогинишься, такие привилегии и имеешь. Если ты гендиректор, то твои изменения всегда побеждают.
12 ноя 08, 14:15    [6429027]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: An INSERT EXEC statement cannot be nested для системной процедуры  [new]
MikeCrazy
Guest
-- ФОРМАТ ПРОЦЕДУРЫ НА ЗАМЕНУ ТАБЛИЧНОЙ ФУНКЦИИ
CREATE PROCEDURE [SP_NAME](<CommonArgList>, @TmpTableId INT = 0)
AS BEGIN

CREATE TABLE #result_table (<SP_NAME_RESULT_FIELDS>)

IF isnull(@TmpTableId,0) = 0 BEGIN
SELECT DISTINCT * FROM #result_table
END ELSE BEGIN
declare @sql as varchar(max)
IF not exists(SELECT [name] FROM tempdb..sysobjects WHERE id=@TmpTableId ) BEGIN
set @sql = 'select ''error'' '
SELECT
@sql = 'select DISTINCT * into ' + name +
' from #result_table'
FROM tempdb..sysobjects WHERE id=@TmpTableId

exec (@sql)
END ELSE BEGIN
set @sql = 'select ''error'' '
SELECT
@sql = 'insert into ' + name +
' select DISTINCT *
from #result_table'
FROM tempdb..sysobjects WHERE id=@TmpTableId
exec (@sql)
END
END

END

--ИСПОЛЬЗОВАНИЕ ХРАНИМОЙ ПРОЦЕДУРЫ ДАННОГО ФОРМАТА (РЕЗУЛЬТАТ ВО ВРЕМЕННУЮ ТАБЛИЦУ СОЗДАННУЮ ЗАРАНЕЕ)
<...>

declare @<SP_NAME_ResultTable> INT
CREATE TABLE #<SP_NAME_ResultTable> (SP_NAME_RESULT_FIELDS) -- вобщемто любое имя, это не важно
SET @<SP_NAME_ResultTable> = OBJECT_ID('tempdb..#<SP_NAME_ResultTable>')
EXEC <SP_NAME> <CommonArgList>, @<SP_NAME_ResultTable>

<...>

--ЕСЛИ НЕ ПЕРЕДАВАТЬ ПОСЛЕДНИЙ ПАРАМЕТР - ПРОСТО ВЫВЕДЕТСЯ НА ЭКРАН
6 дек 12, 07:37    [13585332]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2]      все
Все форумы / Microsoft SQL Server Ответить