2014-09-04 3 views
0

У меня есть следующий T-SQL кодВыполнение хранимой процедуры в UPDATE T-SQL

UPDATE 
    #f_contr_temp 
SET 
    sum_percent = (EXEC get_f_contr_credit_delay_pz fct.f_contr, @date_loop, @sum_percent OUTPUT) 
FROM 
    #f_contr_temp AS fct, 
    f_garanty AS fg 
WHERE 
    fct.f_contr = fg.f_contr 

Im пытается обновить столбец sum_percent, но бросить исключение, что я не могу выполнить процедуру обновления. Я понятия не имею, как обновить мою колонку. Пожалуйста помоги.

+0

Если это вычисление, вы должны лучше преобразовать хранимую процедуру в функцию, а затем использовать функцию для обновления столбца таблицы. – Deepshikha

+0

Также, как я вижу, нет внутреннего соединения с таблицей 'f_garanty', поскольку sproc' get_f_contr_credit_delay_pz' не принимает никаких данных из этой таблицы. – Deepshikha

+0

@Deepshikha. Внутреннее соединение также можно фильтровать. Обновление только значений fct, которые присутствуют в fg. Но я согласен с преобразованием этого в функцию. –

ответ

0

Используйте временную таблицу для хранения результата вашей š.p. следующим образом:

CREATE TABLE #temp (percentage decimal(18,9)) 

INSERT INTO #temp 
(EXEC get_f_contr_credit_delay_pz fct.f_contr, @date_loop, @sum_percent OUTPUT) 

UPDATE 
    #f_contr_temp 
SET 
    sum_percent = (select top 1 percentage from #temp) 
FROM 
    #f_contr_temp AS fct, 
    f_garanty AS fg 
WHERE 
    fct.f_contr = fg.f_contr 

Я полагаю, ваши возвращенные значения š.p., поэтому я использую команду TOP 1, чтобы получить только первый.

Обратите внимание: , что является его источником? Таким образом, запрос неверен.

+0

Ваше заявление не удастся. –

+0

@samyi: Если вы это напишете, добавьте свое мнение, чтобы я мог исправить свой ответ, чтобы наши друзья могли прочитать правильный ответ. Для дальнейшего примера: http://blog.sqlauthority.com/2009/09/23/sql-server-insert-values-of-stored-procedure-in-table-use-table-valued-function/ –

+0

'fct. f_contr' в вашем заявлении выполнения недействителен ... и нет необходимости в таблице temp и «top 1», когда вы можете использовать выходной параметр. Другими словами, ваш ответ просто неверен. ;) –

Смежные вопросы